Bonjour,
J'essaye actuellement d'importer des DLL (littleCMS) depuis le langage C vers C#; et j'ai quelques soucis avec Pinvoke.
Avec les codes :
sur ma DLL et le code suivant dans un main de test qui à ma DLL en référence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 namespace myLib { public class WrapperLCMS { public struct cmsHPROFILE { Object profile; } #region import [DllImport("lcms.dll")] public static extern unsafe cmsHPROFILE cmsOpenProfileFromFile(char* ICCProfile, char* sAccess); #endregion import #region InitFct public static unsafe cmsHPROFILE OpenProfileFromFile(string profile, string sAccess) { fixed (char* ICC = profile.ToCharArray()) fixed (char* access = sAccess.ToCharArray()) return cmsOpenProfileFromFile(ICC, access); } #endregion InitFct } }
Est-ce que j'utilise mon wrapper de la bonne façon ? le message d'erreur est : La signature du type de cette méthode n'est pas compatible avec PInvoke.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 using myLib; namespace test_luib { class Program { static void Main(string[] args) { WrapperLCMS.cmsHPROFILE hInProfile, hOutProfile; // WrapperLCMS.cmsHTRANSFORM hTransform; hInProfile = WrapperLCMS.OpenProfileFromFile("1.icc", "r"); hOutProfile = WrapperLCMS.OpenProfileFromFile("2.icc", "r"); } } }
Merci d'avance de votre aide.
PS: J'espère être dans le bon endroit pour poster cela.
EDIT : voila le prototype en C de la fonction que j'essaye de wrapper : CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess);
Partager