2

我正在用 C# (Windows Mobile 6.1 - Visual Studio 2008 - Pocket PC) 开发一个 SmartDevice 项目,并且我想使用 PInvoke。我有一个用 C++ 编写的本机 DLL。

当我在我的设备上运行应用程序时,我将本机 DLL 放置在 \Program Files\My Project 目录(在我的设备上)并且它可以工作,但是我需要使用模拟器并且我不知道在哪里放置我的 navive DLL(在我的电脑上)在这种情况下。

我尝试使用相对路径进入工作目录,我尝试 DllImport 绝对路径:

[DllImport(@"C:\John\VMDLLDevice.dll", EntryPoint = "Write")]
public static extern bool Write(char[] FileName);

但是当我调用本机 DLL 时,我得到了一个异常,因为模拟器找不到 DLL。

我在哪里放置我的本地 DLL 以使用模拟器?

4

2 回答 2

1

假设您在同一个 Visual Studio 解决方案中有这两个项目:

  1. SmartDeviceProject1:Pocket PC 设备中的应用程序C#
  2. NativeDLL: 中的 Win32 SmartDevice DLL C++

现在您可以按照以下步骤操作:

  • 在 Visual Studio Device Option 中为这两个项目选择 Pocket PC Emulator。
  • 部署项目;现在在\\Program Files您的模拟器中,您可以看到两个新目录:SmartDeviceProject1NativeDLL(开始 -> 程序 -> 文件资源管理器 -> 程序文件)。

您的 NativeDLL.dll 位于该NativeDLL目录中,因此请使用以下 DllImport:

[DllImport(@"..\NativeDLL\NativeDLL.dll", EntryPoint = "Write")]
public static extern bool Write(char[] FileName);

现在您可以使用模拟器运行您的应用程序。

MSDN 附加信息: 在智能设备项目中使用仿真器

于 2012-10-15T11:56:25.793 回答
0

您还应该能够将您的 DLL 添加为对您的项目的引用,然后在该文件的属性中,选择Copy Local > True

截屏

于 2012-10-16T15:07:03.967 回答