pinvoke: не знаю, как работать с dllimport и импортированными библиотеками

Я делаю dllImport для dll C++, и у меня есть следующая подпись. StackOverflow до сих пор был очень полезен, поэтому я решил, что выброшу этот и посмотрю, что у меня получится.

Есть ли какие-то ошибки, о которых мне следует беспокоиться? Я впервые использую dllimport.

Мне нужно импортировать в С# следующее:

HANDLE FooInit(имя символа*); //имя выглядит как строка типа "COM1"

int Foo1(дескриптор HANDLE, предложение const char**); //предложение похоже на строку "Hello World"

int Foo2 (HANDLE handle, DWORD* val);

Большое спасибо!


person MedicineMan    schedule 04.02.2009    source источник


Ответы (2)


Ознакомьтесь с P/Invoke Cheat Sheet (неполный, но краткий справочник) . char * обычно становится строкой. const char ** сложнее, так как я не могу сказать, глядя на него, является ли это указателем на одну строку или массив строк.

person plinth    schedule 04.02.2009

На первый взгляд, я ожидаю, что вы будете использовать IntPtr для всех ваших параметров и возвращаемого типа HANDLE, а также int для возвращаемых значений Foo1 и Foo2.

person Joe    schedule 04.02.2009
comment
HANDLE и DWORD*, меня это не слишком беспокоит, но я не знаю, с чего начать с аргумента const char** - person MedicineMan; 04.02.2009
comment
Если переменная предложения является параметром [out], передайте ссылку StringBuilder. Для char * вы можете просто передать строку. - person scottm; 04.02.2009