C#UWPアプリケーションからアンマネージドDLLからメソッドを呼び出そうとしています。私はこれを行うが、私はそれを使用することができますので、アンマネージドDLLに "LoadLibrary()"ピンポンキング。すべてのリリースモードでただし、デバッグモードで正常に動作UWP C#アプリケーションのpinvokeを使用したLoadLibraryの呼び出し
これ、私は好奇心のエラーが表示されます。
メッセージ:クラスの初期化メソッドTests.UnitTests.InitializeClientが例外を投げました。 System.TypeLoadException:System.TypeLoadException:UWPアプリケーションで使用できないため、アセンブリ 'Client、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'の未解決のP/Invokeメソッド 'LoadLibrary!kernel32'。
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr LoadLibrary(string librayName);
:ここ
はロードライブラリをPInvokeのために私の方法..です別のAPIを使用するか、非UWPアプリケーションAPIを使用しての意味を理解することを示すために、[DLLIMPORT(ExactSpelling = true)を使用するかしてください私は以下のように "ExactSpelling = true" を追加した場合
残念ながら、:
System.EntryPointNotFoundEx:次に呼び出す
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
public static extern IntPtr LoadLibrary(string librayName);
それが例外をスローしますception: 'DLL' kernel32 'で' LoadLibrary 'というエントリポイントを見つけることができません。'
ご協力いただきありがとうございます。代わりに
実際、kernel32.dll' 'で' LoadLibrary'という名前のエントリポイントがありません。 2つのものがあります:ANSI文字列の 'LoadLibraryA'とUnicode文字列の' LoadLibraryW'です。あなたは後者が欲しい。しかし、それが動作する保証はありません*。私が集めたものから、あなたはUWP上で['LoadPackagedLibrary'](https://msdn.microsoft.com/library/windows/desktop/hh447159)を使うはずです(しかし私はUWP開発者ではありません)。 –
LoadLibraryW()はUWPアプリケーションの* verboten *です。あなたのアプリは認定を受けることができず、店を通じて販売して展開することはできません。 –
それは確かですか?私はLoadLibraryWを[DllImport( "API-MS-WIN-CORE-LIBRARYLOADER-L2-1-0.DLL"、SetLastError = true)]インポートを介して読み込むことができました。 – TheJeff