首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加"winmd“引用与添加项目引用

添加"winmd“引用与添加项目引用
EN

Stack Overflow用户
提问于 2013-07-19 20:59:39
回答 3查看 10.2K关注 0票数 8

我有一个Windows phone8项目和另一个用C++编写的项目;它们都在同一个解决方案中。C++项目是在WP8项目中使用的动态库,它被配置为在.dll文件之上生成一个Windows Metada文件(.winmd)。

在WP8项目中添加C++项目作为项目引用时,一切都运行得很好。

但是,我想直接引用二进制文件,而不是项目,所以我尝试引用.dll本身,但VS2012不让我这样做(这一点我完全理解,因为据我所知,这个库是非托管的)。添加.winmd文件可以正常工作,我的意思是它编译时没有警告/错误;但它在运行时崩溃(我得到一个TargetInvocationException,它是因为找不到C++库的“实际”代码而引发的)。

在添加.winmd文件时,我确保.dll文件就在它旁边。将这两个文件都放在WP8项目的bin目录中也不起作用。

我在网上找不到任何线索,如果你能给我一些,我将不胜感激,任何提示都是受欢迎的!

以下是我正在尝试建立的简单架构的模式:

下面是异常引发的堆栈跟踪:

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-19 23:15:27

嗯,我设法让它工作了。正如原始帖子中的堆栈跟踪所暗示的那样,我在应用程序中使用了SQLite。如果我添加winmd文件作为引用,而不是添加C++项目,则看起来有些依赖项不能满足。

因此,我必须在WP8ClassLibrary项目中添加一个对SQLite for Windows Phone的引用。不知何故,这是我的一个愚蠢的错误,因为这个C++项目本身可能带有这种依赖(其中有几个winmd引用,但基于它们晦涩的名称,我无法猜测它们会是SQLite for Windows Phone的一部分)。

票数 0
EN

Stack Overflow用户

发布于 2013-07-19 21:53:16

工具+选项、项目和解决方案、构建和运行。将"MSBuild项目构建输出详细程度“设置更改为正常。

注意构建输出,即您在"XapPackager“之后看到的消息。其中显示了哪些文件将添加到Xap包中。您的DLL需要在该列表中。如果不是,那么你的程序将会按照描述的那样失败。在这种情况下,您需要找出它被跳过的原因。首先检查.winmd引用的Copy Local属性是否为True。

票数 1
EN

Stack Overflow用户

发布于 2016-02-12 14:13:04

我只是想把我的经验加到答案里..

如果您尝试将C++库直接添加到C#代码中(对于Windows phone8.1应用程序,在我的示例中),那么包含.winmd文件将启用编译,但应用程序在启动时会崩溃。堆栈跟踪仅显示无法加载C++ dll。

我还必须在C#应用程序中添加对Visual Studio C++运行时库的引用。我通过区分工作.xap (创建自同时包含C#和C++项目的解决方案)和非工作.xap (创建自仅包含C#项目的解决方案以及对C++ .winmd文件的引用)发现了缺少的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17746702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档