假设您有以下C ++代码:
extern "C" {
void testA(int a, float b) {
}
static void testB(int a, float b){
}
}
我想使用DllImport
在我的C#项目中访问它:
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。
我可以从C#代码访问testB
吗?怎么样?
答案 0 :(得分:10)
static
在C ++中的含义与在C#中的含义不同。在命名空间范围内,static
提供名称内部链接,这意味着它只能在包含定义的翻译单元中访问。没有静态,它有外部链接,可以在任何翻译单元中访问。
如果您想使用static
DllImport
关键字