【发布时间】:2011-06-09 11:47:47
【问题描述】:
长期阅读,第一次海报。我希望有一天能在这里回答问题...
所以它有点类似于:"Unable to find an entry point named [function] in dll" (c++ to c# type conversion)
但我似乎无法应用相同的解决方案...
基本上,我写了一个新方法:
在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 中命名的“IsDataValid()” 'CarChipSDK_C_Sharp.dll'。
我在从 c++ 代码生成的 .dll 上使用了 dumpbin.exe 和依赖项walker,它表明它具有 IsDataValid() 入口点。
非常感谢所有帮助...
问题解决了!愚蠢的我,这是我当前公司以前合作社的代码,原来他正在从 bin/release 文件夹中读取 .dll,而我正在构建 bin/debug 文件夹。应该知道的。我深表歉意。
【问题讨论】:
标签: c# c++ dll entry-point