我有一個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;並且在'Begin Xap packaging'之後,'winmd'和'all'文件都顯示在列表中。我簡化了一些原來的帖子,我有一個生成'dll'和'winmd'的C++文件,這個'winmd'用於WP8類庫項目中,該項目生成用於「具體」WP8項目的'dll'。在構建過程中正確複製了兩個'dll'和'winmd'文件。 – Max
你不幫我幫你。 「全部文件?兩個dll?您現在有辦法診斷兩種方法之間的不同之處,但沒有提及任何方法。我沒有詳細的例外信息來查看。如果你不能更好地記錄它,我必須推薦一個項目參考。 –
對不起,我的意思是「'winmd'和'dll'文件」,我的手指不知何故滑到'a'鍵... – Max