1. ホーム
  2. c#

[解決済み] Pocket PCエミュレータを使用するためのネイティブDLLはどこに置くのですか?

2022-01-30 14:23:22

質問

C# (Windows Mobile 6.1 - Visual Studio 2008 - Pocket PC)でSmartDeviceプロジェクトを開発しており、PInvokeを使用したいと考えています。私はC++で書かれたネイティブDLLを持っています。

しかし、エミュレータを使用する必要があり、この場合ナビゲート DLL (コンピュータ上) をどこに置けばよいのかわかりません。

作業ディレクトリは相対パスで、DllImportは絶対パスで試してみました。

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

しかし、ネイティブDLLをpinvokeすると、エミュレータがDLLを見つけることができないため、Exceptionが発生しました。

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

解決方法は?

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

  1. SmartDeviceProject1 でのPocket PCデバイスのアプリケーションです。 C# .
  2. NativeDLL の Win32 SmartDevice DLL を使用します。 C++ .

これで、次のような手順を踏むことができます。

  • Visual Studioのデバイスオプションで、両方のプロジェクトにPocket PC Emulatorを選択します。
  • プロジェクトをデプロイします。 \\Program Files の2つの新しいディレクトリを見ることができます。 SmartDeviceProject1NativeDLL (スタート -> プログラム -> ファイルエクスプローラ -> プログラムファイル)。

あなたのNativeDLL.dllは、以下の場所にあります。 NativeDLL ディレクトリにあるので、以下のDllImportを使用します。

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

そして、エミュレータを使ってアプリケーションを実行することができるようになりました。

MSDN追加情報です。 スマートデバイスのプロジェクトでエミュレータを使用する .