J'ai des problèmes pour importer une DLL non gérée C++ dans C# [winform]. Quelqu'un peut-il aider?Problème lors de l'utilisation de C++ non géré à partir de C# à l'aide de dllimport
Fondamentalement, j'essaie simplement de créer un safearray de chaînes en C++ et en essayant de l'envoyer en C#.
Voici mon code C++.
extern "C" __declspec(dllexport) BOOL GetStringArr(SAFEARRAY* arr)
{
SAFEARRAY* myArray;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 5;
myArray = SafeArrayCreate(VT_BSTR, 1, rgsabound);
VARIANT* pvData = (VARIANT*)(myArray->pvData);
pvData[0].vt = VT_BSTR;
pvData[0].bstrVal = SysAllocString(L"FirstString");
pvData[1].vt = VT_BSTR;
pvData[1].bstrVal = SysAllocString(L"SecondString");
pvData[2].vt = VT_BSTR;
pvData[2].bstrVal = SysAllocString(L"ThirdString");
pvData[3].vt = VT_BSTR;
pvData[3].bstrVal = SysAllocString(L"FourthString");
pvData[4].vt = VT_BSTR;
pvData[4].bstrVal = SysAllocString(L"FifthString");
arr = myArray;
return true;
}
Voici mon code C#.
[DllImport("MyData.dll", EntryPoint = "GetStringArr")]
public static extern bool GetStringArr([MarshalAs(UnmanagedType.SafeArray)] out Array strServerList);
Je reçois une exception lorsque j'appelle GetStringArr de C#. Je suis sûr qu'il y a quelque chose de stupide que je fais. Puis-je avoir une aide s'il vous plait?
Merci d'avance.
BOOL GetStringArr (SAFEARRAY * arr), je pense que cela devrait être BOOL GetStringArr (SAFEARRAY ** arr) puisque vous allouez le tableau dans la fonction. –