0

在查阅了大量博客和网页并尝试了人们解释的几乎所有内容后,我提出了这个问题。

我将 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

先感谢您,

4

1 回答 1

1

对不起,我真的很愚蠢。
应用程序无法加载 DLL 文件的原因是因为我在移动设备上运行调试。它导致了路径问题。

所以我手动将DLL文件和应用程序的EXE文件复制到移动设备并运行程序。它工作得很好。
汉斯(评论者),你是对的。谢谢。=)

现在,我的问题现在变成了如何轻松调试这个问题。

我目前知道的唯一方法是将 DLL 和 EXE 文件的发布版本手动复制到移动设备并进行测试。=(

有人知道更好的方法吗?

于 2011-04-18T08:34:35.013 回答