2016-09-26 7 views
0

Windows開発の経験はほとんどありません。いくつかの問題が発生しています。私はC++で書かれたプライベートなサードパーティライブラリを持っています。私はソースコードにアクセスすることができず、このライブラリには多数の第三者依存があります。問題は、PInvoke経由でCSharp UWPアプリケーションからこのアプリケーションを使用したいのですが、これまでのところ問題があります。 DLLNotFoundExceptionが発生しています。これは、ライブラリをロードできない場合や、依存関係をロードできない場合に発生する可能性があります。.net UWPアプリケーションからネイティブライブラリを使用しているときのDllNotFoundExceptionの診断

これまでに試したこと: 問題を絞り込むために、通常のC#コンソールアプリケーション(Windowsフォームも機能しました)から作業を試みました。このスタートアッププロジェクトから、ライブラリの関数を期待通りに呼び出すことができます。

CSharp UWPテストアプリケーションを使って作業する: 私は2つの数字を一緒に追加する簡単なC++テストライブラリをコンパイルしました。これを使って少なくともメインDLLを正しく含むようにしています。これは私のためにうまく動作します。また、UWPアプリケーションでは、DLLをプロジェクトに直接追加してコンテンツとしてマークする必要がありますので、UWPパッケージに含まれている必要があります。これを実行して、非UWPコンソールアプリケーションが同じDLLです

私の質問はこれと同じ設定で、Windowsコンソール/フォームアプリケーションはライブラリで動作しますが、UWPアプリケーションでは動作しません。これは非UWPアプリケーションがシステムDLLがUWPアプリよりも何かできるのでしょうか?もしあなたが少なくとも私が可能性のある問題を絞り込むのを助けることができれば素晴らしいと思います。もしUWPがどのライブラリ(の)であるかを知る方法があれば、アプリは読み込めません。たとえ非UWPアプリでもすべてを読み込めますが、

UWPアプリケーション私が使用しているのはリモートデバイスに(まだ)展開されていません。アプリケーションをローカルでデバッグする際に問題が発生しています。注 - そのテストアプリを掲示することは問題外である:(任意の助け

おかげで

答えて

0

ああ、私はこの特定の問題に対する答えを見つけ、問題があることだった - 。。私が使用していますライブラリを共有することはできません私はまた、環境変数のパス経由でリンクされているDLLをコピーしなければならなかった。私はいくつかのOpenCV DLLを忘れていた。

これを追跡するための便利なツール: 私の場合は、私は、実行時に特定のプロセスによってロードされたDLLを一覧表示するための "listdll"ツールを使用することができました。これを、アプリケーションのUWPバージョンで実行しました。 DLLがちゃんと読み込まれていないという大まかなアイデアを得ることができました。私はこれを "pestudio"と組み合わせて使用​​して、.exeやDLLの必要な依存関係を見ることができます。

関連する問題