Windows Phone 8 プロジェクトと、C++ で記述された別のプロジェクトがあります。どちらも同じソリューションにあります。C++ プロジェクトは、WP8 プロジェクトで使用される動的ライブラリであり、ファイルの上に Windows メタダ ファイル ( .winmd
)を生成するように構成されてい.dll
ます。
C++ プロジェクトを WP8 プロジェクトのプロジェクト参照として追加すると、すべてが完全に機能します。
ただし、プロジェクトではなくバイナリを直接参照したいので、.dll
それ自体を参照しようとしましたが、VS2012では許可されませんでした(ライブラリは私が理解していることから管理されていないため、完全に理解しています)。代わりにファイルを追加すると機能します。つまり、.winmd
警告/エラーなしでコンパイルされます。しかし、実行時にクラッシュします ( TargetInvocationException
C++ ライブラリの「実際の」コードが見つからないために発生する a を取得します)。
ファイルを追加するとき、ファイルがその隣にあることを.winmd
確認しました。.dll
両方のファイルをbin
WP8 プロジェクトのディレクトリに配置しても機能しません。
インターネット上で手がかりを見つけることができません。何かヒントをいただければ幸いです。どんなヒントでも大歓迎です!
これは、私が設定しようとしている簡単なアーキテクチャのスキーマです。
そして、発生した例外のスタックトレースは次のとおりです。
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()