Доступ к статическим методам C ++ из C #

Скажем, у вас есть следующий код C ++:

extern "C" {
void testA(int a, float b) {
}

static void testB(int a, float b){
}
}

Я хочу получить доступ к этому в моем проекте C # с помощью DllImport:

class PlatformInvokeTest
{
[DllImport("test.so")]
public static extern void testA(int a, float b);
[DllImport("test.so")]
internal static extern void testB(int a, float b);

public static void Main()
{
testA(0, 1.0f);
testB(0, 1.0f);
}
}

Это прекрасно работает для testA, но testB не может вызвать исключение EntryPointNotFoundException.

Могу ли я получить доступ testB из моего кода C #? Как?

11

Решение

static не означает то же самое в C ++, как в C #. На уровне пространства имен, static дает внутреннюю связь имени, означающую, что она доступна только в пределах единицы перевода, содержащей определение. Без статики он имеет внешнюю связь и доступен в любом модуле перевода.

Вам нужно будет удалить static Ключевое слово, когда вы хотите использовать DllImport

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]