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 :
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
    }
}
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
 
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");
        }
    }
}
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.

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);