将c++ DLL导入c#智能设备应用程序

本文关键字:应用程序 智能 c++ DLL 导入 | 更新日期: 2023-09-27 17:50:21

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

我没有问题导入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 Classic
  • ce OS 5.2.1433
  • 处理器:ARM920T

开发环境是…

  • Windows 7 64bits
  • Visual Studio 2005

提前感谢,

将c++ DLL导入c#智能设备应用程序

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

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

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

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

有人知道更好的方法吗?