博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
boost静态链接库和c++/clr不兼容问题:未能加载文件或程序集,不是有效的Win32应用程序。...
阅读量:6037 次
发布时间:2019-06-20

本文共 915 字,大约阅读时间需要 3 分钟。

hot3.png

转自:http://blog.csdn.net/h807892124/article/details/51326552

项目上遇到的问题:c++编写的类使用托管c++包装成dll提供给c#项目使用。c++需要使用boost,clr,项目目标平台都是win32/x86。开发环境win10 x64系统,vs2013,.Net Framework 4.0,boost 1.55。

【问题表现】c#程序在win10 x86/x64正常运行,但在win7 x86/x64运行时发生异常:

Additional information: Could not load file or assembly “LicenseClientDLL_D.dll” or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT:0x800700C1)
这里写图片描述

【原因】boost库默认使用静态链接方式,但boost静态链接库和C++/clr不兼容,所以要换成动态链接。

stackoverflow上相关资料:
Too many comments in the net saying boost static libs and CLR are not compatible.
It was the boost libraries having some issue when compiled without /clr but linked to a program that uses /clr

【解决方案】c++使用boost动态链接库。

1.在需要使用boost库的项目的“预处理器定义”增加 BOOST_THREAD_DYN_LINK (要求动态链接boost库)
2.手动拷贝需要引用的boost库文件到项目路径 libboost、boost开头的lib文件(BOOST_LIB_DIAGNOSTIC 该宏可以查看需要的boost库)
3.重新编译

转载于:https://my.oschina.net/lanybass/blog/711346

你可能感兴趣的文章
asp.net C# MVC 提交表单后清空表单
查看>>
备份软件 FreeFileSync 怎么用
查看>>
Asp.net,C# 加密解密字符串
查看>>
网页视频播放器插件源码
查看>>
CentOS7 睡眠 休眠 关机 电源
查看>>
SqlServer里DateTime转字符串
查看>>
2019-4-23 plan
查看>>
固定弹层叉掉
查看>>
[编解码] 关于base64编码的原理及实现
查看>>
WinDbg配置和使用基础
查看>>
转:Object-Runtime的基本数据类型
查看>>
JMJS系统总结系列----Jquery分页扩展库(五)
查看>>
Excel技巧之——英文大小写转换(转)
查看>>
Google 翻译的妙用
查看>>
算法导论--python--插入排序
查看>>
Hydra用户手册
查看>>
常用的集合
查看>>
Unity3D工程源码目录
查看>>
杀死进程命令
查看>>
cookie 和session 的区别详解
查看>>