本文为个人博客备份文章,原文地址:

http://validvoid.net/wp-cpp-typeloadexception/

使用 Visual Studio 2013 update 4 在 WP8/ WP8.1 项目引用 C++ 组件如果遭遇到

System.TypeLoadException: Requested Windows Runtime type 'XXXXX.XXXXX' is not registered.

这一错误,是由于 Visual Studio 2013 update 4 的一个 bug 导致引用 C++ 组件后没有正常为 C++ 在应用的清单文件中进行注册。该问题可以通过两种方法解决。

第一种方法,暴力替换 update 4 版中的如下文件为 update 3 版本:

* Microsoft.AppxPackage.Targets
* Microsoft.Build.AppxPackage.dll

文件路径

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage\

然而并不推荐这么做,谁也不知道替换之后还会出现什么 bug(s)。

第二种方法,也就是目前的正确姿势是修改应用的清单文件:

在应用的清单文件 (Package.appxmanifest) 中末尾的 </Package>节点前加入如下配置代码:

<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>AAA.dll</Path>
<ActivatableClass ActivatableClassId="AAA.BBB" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>

其中,AAA.dll为 C++ 组件的 .dll 文件名;AAA.BBB 为报错信息中提示的未注册的类型名称。

原本以上这段配置应该是 VS 自动添加的,而它并没有这么做,所以导致里上述问题的发生,手动添加后即可解决问题。

提示

  1. 一般情况下,引用 C++ 组件出现问题,请先确保正确引用了 .winmd 文件而不是 .dll 文件;同时要确保 .winmd 和 .dll 文件名一致。

  2. 在 Visual Studio 2013 update 5 中,上述 bug 已经得到修正。

解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误的更多相关文章

  1. 项目中调用ExcelCom组件时的配置流程

    异常提示如下:         Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有:        1 文件名称或路径不存在.       2 文件正被其他程序使 ...

  2. ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package

    目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...

  3. ios项目中引用其他项目复习

    ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Li ...

  4. 在项目中引用android.support.v7

    在Android开发中,新建的项目可能因为缺少对sopport工程的引用而报错,可以这样解决. 1.项目右键 --> import --> Android --> Existing ...

  5. git 在 A 项目中引用 B 项目

    git 在 A 项目中引用 B 项目   场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...

  6. ASP.NET项目中引用全局dll

    在ASP.NET项目中,有些dll是全局dll,也就是说,没有放在单个项目的引用中.它们一般存放在如下目录C:\Windows\assembly中 这个时候,我们需要在单个项目中引用他们,应该如何做呢 ...

  7. 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!

    擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...

  8. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...

  9. springboot项目中引用其他springboot项目jar

    1. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等 2.打包 不能使用springboot项目自带的打包插件进行打包: 3.打包 4 ...

随机推荐

  1. [CentOS7] timedatectl设置时区

    查看当前时区日期等配置 显示可选时区 选择时区

  2. Python中的可迭代对象

      Python中的可迭代对象有:列表.元组.字典.字符串:常结合for循环使用: 判断一个对象是不是可迭代对象: from collections import Iterable isinstanc ...

  3. Redis源码阅读---连接建立

    对于并发请求很高的生产环境,单个Redis满足不了性能要求,通常都会配置Redis集群来提高服务性能.3.0之后的Redis支持了集群模式. Redis官方提供的集群功能是无中心的,命令请求可以发送到 ...

  4. equals和==的区别 (Java基础)

    1. == 是一个运算符.2.Equals则是string对象的方法,可以.(点)出来. 我们比较无非就是这两种 1.基本数据类型比较 2.引用对象比较 1.基本数据类型比较 ==和Equals都比较 ...

  5. JSONArray.fromObject Date显示问题

    原文链接:http://www.cnblogs.com/Nbge/archive/2012/07/31/2617127.html 使用JSONArray.fromObject,Date类型打出来的完全 ...

  6. flink学习笔记-各种Time

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...

  7. 高仿JDK动态代理 底层源码实现

    动态代理实现思路 实现功能:通过Proxy.newProxyInstance返回代理对象 1.创建一个处理业务逻辑的接口,我们也和JDK一样,都使用InvocationHandler作为接口名,然后接 ...

  8. clang -O3 for循环的LLVM IR

    O3都是怪物,这里分析的是CLANG怪物,示例程序遍历数组每个元素然后放大. void foreach_scale(int arr[],int elem){ for(int i=0;i<elem ...

  9. Jenkins+Git+Maven+Nexus+Tomcat

    https://www.jianshu.com/p/d24e64559440 https://blog.csdn.net/u013322876/article/details/72637854 htt ...

  10. java程序设计实验

    建立文件调试jdk idea断点调试 项目素数的寻遍