私はWindows Phone 8プロジェクトとC++で書かれた別のプロジェクトを持っています。どちらも同じソリューションになっています。 C++プロジェクトは、WP8プロジェクトで使用される動的ライブラリであり、.dll
ファイルの上にWindows Metadaファイル(.winmd
)を生成するように設定されています。"winmd"リファレンスの追加vsプロジェクト参照の追加
WP8プロジェクトでC++プロジェクトをプロジェクトリファレンスとして追加すると、すべて正常に動作します。
しかし、私は.dll
自体を参照しようとしましたが、VS2012は私に許されませんでした(ライブラリは私が理解していないので完全に理解しています)。代わりに.winmd
ファイルを追加すると、警告/エラーなしでコンパイルされます。実行時にクラッシュします(TargetInvocationException
が発生しますが、これはC++ライブラリの "実際の"コードが見つからないためです)。
.winmd
ファイルを追加するときに、私は.dll
ファイルがその隣にあることを確認しました。両方のファイルをWP8プロジェクトのbin
ディレクトリに置くことはできません。
私はインターネット上の手がかりを見つけることができず、私に何かを与えることができれば感謝しています。何かヒントは大歓迎です!
は、ここで私が設定しようとしている些細なアーキテクチャのスキーマです:
そして、ここで発生した例外のスタックトレースです:
at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
at Sqlite.Sqlite3.sqlite3_open_v2(String filename, Database& db, Int32 flags, String zVfs)
at SQLite.SQLite3.Open(String filename, Database& db, Int32 flags, IntPtr zVfs)
at SQLite.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
at WP8ClassLibrary.SomeManager..ctor(String databasePath)
at WP8App.SomeViewModel..ctor()
at WP8App.MainPage..ctor()
ありがとうございました。 Copy Localプロパティはtrueに設定されています。 'Winmd'と' all'ファイルは 'Begin Xap packaging 'の後にリストに表示されます。私は元の投稿の状況を少し簡略化しました。私は 'dll'と' winmd'を生成するC++ファイルを持っています。この 'winmd'はWP8クラスライブラリプロジェクトで使用され、"具体的な "WP8プロジェクトで使われている' dll'を生成します。 2つの 'dll'ファイルと' winmd'ファイルはビルド時に正しくコピーされます。 – Max
あなたは私を助ける手助けをしていません。 "すべてのファイル? 2つのDLL?あなたは今、2つのアプローチの違いを診断する方法を持っていますが、何も言及していません。私はどちらかを見るために詳細な例外メッセージを持っていません。あなたがそれをより良く文書化できないなら、私はプロジェクト参照を推薦しなければならないでしょう。 –
私は "winmd"と 'dll'ファイルを意味して申し訳ありません、私の指は何とか' a'キーに滑り込んでしまいました... – Max