Przekształć deklarację procedury Clarion na C # DLLImport
Jak mogę przekonwertować deklarację procedury Clarion na C #? Jest to część 3rd Party DLL napisana w C, która nie ma zbyt wielu dokumentów. Wymieniłem prototyp metody w Clarion, która działa poprawnie. W języku C # nie jestem pewien, jakiego typu użyć do zastąpienia*CString
. próbowałemchar[]
jak sugerował @ DanielC, ale to nie zadziałało. Odkryłem również, że Clarionlong
jest 32-bitowy (thanks @ shf301).
Ostry:
SendRequest Procedure(*CString xData,Long DataLen,Long xTimeout),Byte,Virtual
C # (co próbowałem, co nie działa):
[DllImport("3RD_PARTY_API.dll")]
private static extern long SendRequest(ref string xData, int DataLen, int xTimeout);
Kiedy zadzwonię doSendRequest
metoda w C # Dostaję standardWykryto nierównowagę PInvokeStack błąd z VS2010. Myślę, że to kwestia typów parametrów, a nie czegoś takiegoCharSet
lubEntryPoint
wDeklaracja DllImport. Jestem naprawdę po prostu przekonany, jak się przekonwertować*CString
do poprawnego typu C #.