Bonjour � tous,

Ca fait maintenant plus d'une semaine que je me casse les dents sur un probl�me d'importation de DLL. La DLL en question est fournie par une soci�t� tierce avec toute la documentation n�cessaire pour l'utiliser.

Maintenant, je commence juste � d�velopper avec Visual C++ 2005 Express et je me replonge apr�s plusieurs ann�es de VB dans le langage C++ et j'avoue que j'ai un peu de mal. Mais gr�ce � developpez.com et ses sources d'informations on s'en sort.

Jusque l� �a va ...

Apr�s plusieurs tentatives infructueuses d'importation de la DLL dans une application "Windows Forms", j'ai fait des essais avec un projet "Console Win32" et la DLL fonctionne correctement. Mais uniquement avec l'option "sans prise en charge du CLR". D�s que je s�lectionne l'option "avec prise en charge du CLR (/clr)" dans les propri�t�s du projet et en gardant le m�me code. La DLL n'est plus accessible et lors de l'execution j'ai des violatons d'acc�s m�moire.

Et moi je voudrais bien l'importer dans une application "Windows Forms" ! Donc forc�ment avec l'option "avec prise en charge du CLR (/clr)". Et que ce soit en dynamique ou en statique, rien � faire, � l'execution je n'arrive pas � charger la DLL.

Voici un exemple de code d'importation que j'ai essay� dans le projet "Windows Forms" :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
[DllImport("D:\\usr\\fox\\system32\\iccapi.dll", EntryPoint = "ICCopen")]
__declspec(dllimport) int ICCopen(char *, int, char *); 
[DllImport("D:\\usr\\fox\\system32\\iccapi.dll", EntryPoint = "ICCclose")]
__declspec(dllimport) int ICCclose();
Et pour l'appel des fonctions :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
ICCopen("FLY010",5,"01234567890123456789");
ICCclose();
A la compilation tout ce passe bien. Mais � l'execution, lors de l'appel des fonctions, voici ce que j'obtiens dans le fichier de sortie :

'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\iccapi.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\csaretrv.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\largem.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\xhi.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\fox.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
'ESSAI_ICCAPI.exe'*: Charg� 'D:\usr\fox\system32\foxfdr.dll', Le fichier binaire n'a pas �t� g�n�r� avec les informations de d�bogage.
LDR: LdrRelocateImageWithBias() failed 0xc0000018
LDR: OldBase : 00A00000
LDR: NewBase : 03BE0000
LDR: Diff : 0x7c91dec20012c8bc
LDR: NextOffset : 00000000
LDR: *NextOffset : 0x0
LDR: SizeOfBlock : 0x3be0000
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\iccapi.dll'
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\csaretrv.dll'
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\largem.dll'
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\xhi.dll'
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\fox.dll'
'ESSAI_ICCAPI.exe'*: D�charg� 'D:\usr\fox\system32\foxfdr.dll'
Une exception non g�r�e du type 'System.DllNotFoundException' s'est produite dans ESSAI_ICCAPI.exe

Informations suppl�mentaires*: Impossible de charger la DLL 'D:\usr\fox\system32\iccapi.dll': Tentative d'acc�s � une adresse non valide. (Exception de HRESULT : 0x800701E7)
Et l� �a ne va plus du tout !
Malgr� toutes mes recherches je ne trouve pas d'o� vient le probl�me.

J'ai donc plusieurs questions :

1) Pourquoi dans mon projet "Console Win32" le r�sultat de la compilation est diff�rent entre les deux options de compilation "sans prise en charge du CLR" et "avec prise en charge du CLR (/clr)" alors que cette derni�re est cens�e prendre en charge les deux types de code, manag� et non manag� ?

2) A quoi correspondent "LDR" et la fonction "LdrRelocateImageWithBias()" qui me posent apparemment probl�me ?

3) Est-ce qu'une �me fort charitable ou un "gourou du CLR" pourrait me venir en aide et m'indiquer des pistes � suivre pour arriver � importer cette DLL dans une application "Windows Forms" ?

Merci � tous ceux qui ont prit le temps de me lire, et merci d'avance � ceux qui pouront m'apporter de l'aide !