2

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 をピンボークすると、エミュレーターが DLL を見つけられないため、例外が発生しました。

エミュレーターを使用するには、ネイティブ DLL をどこに配置すればよいですか?

4

2 に答える 2

1

同じVisualStudioソリューションに次の2つのプロジェクトがあるとします。

  1. SmartDeviceProject1:のPocketPCデバイスアプリケーションC#
  2. NativeDLL:のWin32SmartDeviceDLL C++

これで、次の手順を実行できます。

  • Visual Studioデバイスオプションで、両方のプロジェクトのPocketPCエミュレーターを選択します。
  • プロジェクトを展開します。これで\\Program Filesエミュレーターに2つの新しいディレクトリが表示されます: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 を追加できるはずです。次に、そのファイルの [プロパティ] で [ローカルにコピー] > [True]を選択します。

スクリーンショット

于 2012-10-16T15:07:03.967 に答える