我有C语言的功能
void GetCharArray(char* arrayNew[5])
{
arrayNew[5]= {"Test",
"Test2",
"Test4",
"Test5",
"Test6",
};
}
extern "C" __declspec(dllexport) void GetCharArray(char* arrayNew[5]);
想从我的C代码中调用它,如下所示
[DllImport(@"Test.dll",
CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern void GetCharArray(String[] sbOut);
List<string> testList = new List<string>();
GetCharArray(testList .ToArray());
我希望用C代码中的值填充测试列表。我是否以正确的方式封送它。当调试器到达GetCharArray()函数时,它显示没有找到入口点。请帮忙。
最佳答案
找不到入口点。意味着它找不到符号。尽管函数名是GetCharArray,但它的符号名并没有完全命名为GetCharArray。编译本机DLL时,请确保导出符号并创建链接器定义并命名该符号,以便DllImport能够正常工作。如果你需要更多的帮助,我可以提供更多的信息。我想我知道为什么它不起作用,因为我有一个类似的问题,因为我正确地使用了DllImport。
外部资源
How to create a DEF file for exporting from a DLL
另外还有一个命令行工具,可以从DLL中转储信息,以获取确切的符号名。符号的命名转换是不同的。