Max*_*Max 7 .net c# visual-studio visual-studio-2012 windows-phone-8
我有一个Windows Phone 8项目和另一个用C++编写的项目; 两者都在同一个解决方案中.C++项目是WP8项目中使用的动态库,它被配置为.winmd在.dll文件顶部生成Windows Metada文件().
在WP8项目中将C++项目添加为项目引用时,一切都运行良好.
但是,我想直接引用二进制文件而不是项目,所以我尝试引用.dll自身,但VS2012不会让我(我完全理解,因为库不受我理解的管理)..winmd相反,添加文件是有效的,我的意思是它编译时没有警告/错误; 但它在运行时崩溃(TargetInvocationException因为无法找到C++库的"实际"代码,我得到了一个).
添加.winmd文件时,我确保.dll文件旁边的文件.将这两个文件放在binWP8项目的目录中也不起作用.
我在互联网上找不到任何线索,如果你能给我一些,我将不胜感激,欢迎任何提示!
这是我正在尝试设置的简单架构的架构:

这是引发异常的堆栈跟踪:
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()
Run Code Online (Sandbox Code Playgroud)
好吧,我设法让它发挥作用。正如原始帖子中的堆栈跟踪所表明的那样,我在应用程序中使用 SQLite。如果我添加该winmd文件作为引用而不是 C++ 项目,则似乎某些依赖项不满足。
SQLite for Windows Phone因此我必须在项目中添加对的引用WP8ClassLibrary。这在某种程度上是我的一个愚蠢的错误,因为这个 C++ 项目可能本身就带有这种依赖关系(其中有几个winmd引用,但我无法SQLite for Windows Phone根据它们晦涩的名称猜测它们会成为其中的一部分)。