在查阅了大量博客和网页并尝试了人们解释的几乎所有内容后,我提出了这个问题。
我将 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“TestDLL.dll”。
我双重检查了我的 DLL 位置,所以这不是问题。然后我尝试使用 Visual Studio 2005 中的许多不同模板。
- MFC 智能设备 DLL
- MFC智能设备
- 应用 Win32 智能设备
- 项目 ATL 智能设备项目
- Win32 DLL
但似乎没有任何效果。总是相同的运行时错误。
我还尝试在构建解决方案时更改 CPU 配置。但没有帮助。
所以我现在正在寻求专家的帮助。
仅供参考,我的设备具有以下平台:
- Windows Mobile 6 经典版
- CE 操作系统 5.2.1433
- 处理器:ARM920T
而且开发环境...
- 视窗 7 64 位
- 视觉工作室 2005
先感谢您,