że masz następujące kodu C++:Access C++ statyczne metody z C#
extern "C" {
void testA(int a, float b) {
}
static void testB(int a, float b){
}
}
Chcę uzyskać dostęp do tego w moim projekcie C# za pomocą 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);
}
}
To działa perfekcyjnie dla testA
, ale testB
kończy się niepowodzeniem wrzucania wyjątku EntryPointNotFoundException. Czy mogę uzyskać dostęp do testB
z mojego kodu C#? W jaki sposób?
Funkcja zadeklarowana statyczna * * w zakresie globalnym nie ma zewnętrznego powiązania więc nigdy nie może być eksportowane. Musisz usunąć statyczne. Możesz pomylić to z deklarowaniem funkcji członka klasy, stwierdzając, że statyczne robi coś zupełnie innego. –