在我查阅了大量的博客和网页并尝试了几乎人们解释的所有内容之后,我就是在问这个问题。
将C ++ Win32 DLL导入C#Windows应用程序没有问题。它实际上是直截了当的。
但我要做的是将C ++ DLL导入C#“智能设备应用程序”,特别是使用Visual Studio 2005。
在我的(TestDLL.dll)C ++ DLL源文件中,我有以下几行:
#if defined (__cplusplus)
extern "C" {
#endif
__declspec(dllexport) void __cdecl foo();
#if defined (__cplusplus)
};
#endif
extern void __cdecl foo()
{
}
我的C#包装器(Wrapper.cs)类具有以下内容:
[DllImport(TestDLL.dll)]
private static extern void foo();
public static void fooCS()
{
foo();
}
我的C#驱动程序类调用以下内容:
Wrapper.fooCS();
我将Pocket PC 2003设备连接到PC,然后我开始调试并运行程序。我收到以下错误消息:
MissingMethodException:PInvoke DLL
我双重检查了我的DLL位置,所以它不是问题所在。然后我尝试使用Visual Studio 2005中的许多不同模板。
但似乎没有任何效果。始终是相同的运行时错误。
我还尝试在构建解决方案时更改CPU配置。但没有帮助。
所以我现在正在寻求专家的帮助。
仅供参考,我的设备有以下平台:
开发环境是......
提前谢谢你,
答案 0 :(得分:1)
所以我手动将DLL文件和应用程序的EXE文件复制到移动设备并运行程序。它工作得很好。
汉斯(评论者),你是对的。谢谢。 =)
现在,我的问题现在变成了我可以轻松调试这个问题的方法。
我目前知道的唯一方法是手动将DLL和EXE文件的发布版本复制到移动设备并进行测试。 =(
有人知道更好的方法吗?