Witam serdecznie.
Potrzebuję zaimportować jedną bibliotekę DLL. Próbowałem chyba wszystkiego, co przychodziło mi na myśl ale wszystkie moje próby kończyły się w jeden sposób.
W bibliotece DLL jest funkcja o następującej sygnaturze:
BOOL
WINAPI
xyttsInitW(
LPCWSTR lpszKey,
BOOL fUseCfgFile
);
No więc mój DLLImport wygląda tak:
const string dllName = "xinyitts.dll";
[DllImport(dllName, CharSet = CharSet.Unicode)]
public static extern bool xyttsInitW(string lpszKey, bool fUseCfgFile);
Parametr "lpszKey' musi być ustawiony na "http://www.xytk.cn" żeby biblioteka działała poprawnie. Więc w testowej aplikacji konsolowej zrobiłem następującą rzecz:
static void Main(string[] args)
{
Console.WriteLine("Loading Xinyitts");
Console.WriteLine(Binding.xyttsInitW("http://www.xytk.cn", false).ToString());
Console.ReadLine();
}
Taka aplikacja kończy swój żywot pięknym "AccessViolation Exception".
Próbowałem już wszystkiego, łącznie z marshalowaniem parametrów, ustawianiem wartości na byte zamiast BOOL ITD.
A, warto powiedzieć, że jeżeli w kluczu wpiszę na przykład "abcdefghijkl" to zwracane jest normalnie "False".