在哪里放置本机DLL使用Pocket PC模拟器?

时间:2012-10-15 10:15:46

标签: c# c++ windows-mobile pinvoke mobile-emulator

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

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

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

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

但是当我对本机DLL进行pinvoke时,我得到了一个Exception,因为模拟器找不到DLL。

我在哪里放置我的原生DLL来使用模拟器?

2 个答案:

答案 0 :(得分:1)

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

  1. SmartDeviceProject1C#中的Pocket PC设备应用程序。
  2. NativeDLLC++中的Win32 SmartDevice DLL。
  3. 现在您可以按照以下步骤操作:

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

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

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

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

    MSDN附加信息: Using the Emulator in Smart Device Projects

答案 1 :(得分:0)

您还应该能够将DLL添加为项目的参考,然后在该文件的属性中选择复制本地>真

screenshot