我在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());
我希望我的testList由C代码中的值填充。我正确地编组它。当调试器到达GetCharArray()函数时,它显示没有找到入口点。请帮助。
答案 0 :(得分:1)
找不到切入点。意味着它无法找到符号。虽然函数名称是GetCharArray,但其符号名称并未完全命名为GetCharArray。确保在编译本机DLL时导出符号并创建链接器定义并命名该符号,以便DllImport可以正常运行。如果您需要更多帮助,我可以提供更多信息。我想我知道为什么它不起作用因为我有类似的问题,因为我正确地使用了DllImport。
P.S。还有一个命令行工具可以从DLL转储信息以检索确切的符号名称。符号的命名对象各不相同。