长期读者,第一次海报。我希望有一天能在这里回答问题...
所以它有点类似于:“无法在 dll 中找到名为 [function] 的入口点”(c++ 到 c# 类型转换)
但我似乎无法应用相同的解决方案......
基本上,我写了一个新方法:
在 C++ 项目的头文件中定义为:
extern "C" {
__declspec(dllexport) bool IsDataValid();
}
在 C++ 项目的源文件中定义为:(仅签名)
extern bool __cdecl IsDataValid() {
//function stuf......... returns a bool
}
导入到 C# 项目中的表单 C# 应用程序中,如下所示:
[DllImport("CarChipSDK_C_Sharp.dll", EntryPoint = "IsDataValid")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsDataValid();
它是从 C# 表单 .cs 文件中的同一位置调用的:
bool isDataValid = IsDataValid();
它返回带有消息的异常:
“无法找到在 DLL 'CarChipSDK_C_Sharp.dll' 中命名的入口点 'IsDataValid()'。
我在从 c++ 代码生成的 .dll 上使用了 dumpbin.exe 和依赖项walker,它表明它具有 IsDataValid() 入口点。
非常感谢所有帮助...
问题解决了!愚蠢的我,这是我当前公司以前合作社的代码,原来他正在从 bin/release 文件夹中读取 .dll,而我正在构建 bin/debug 文件夹。应该知道的。我真诚的道歉。