最近在参与一个wpf项目的时候,程序中要用到自定义的dll库,在本机上win10系统上调用的时候程序可以正常运行,但是发现在win7的电脑上调用时程序会异常崩溃,后来查阅资料发现是因为我的dll库需要依赖的动态库在win7的电脑上找不到而导致的。 找了网上的一些解决办法,最后发现将dll的项目属性改为静态连接是最好的解决办法 步骤如下:
打开dll项目——》选择项目-属性——》在属性页目录中选中c/c+±代码生成,将其中的运行库选项改为多线程(/MT),再重新编译-生成dll,这样生成的dll就包含了所需要的依赖库,便可以在没有所需依赖库的机器上运行

这里顺便解释一下运行库几个选项的含义:

在调试模式(debug)下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)

在发布模式(release)下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)

调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况下,发布模式下生成的可执行文件的大小比调试模式下生成的要小

静态链接:多线程(/MT)、多线程调试(/MTd)

动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)

动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。由于静态链接将程序所依赖的运行库集成到了可执行文件中,一般情况下,生成的可执行文件的大小大于动态链接生成的
对比静态链接和动态链接下生成的dll发现,静态链接的dll要比动态链接的要大

WPF开发之解决程序调用自定义dll库在部分win7电脑上无法运行的情况相关推荐

  1. 安卓开发裕语言程序---调用qq收藏作为远程更新实例

    安卓开发&裕语言程序---调用qq收藏作为远程更新实例 在裕语言环境下,做安卓个人开发的过程中,我们时有需要在软件内部实现动态远程公告更新,如果不采用传统方法,而改用QQ收藏来做,那么,如何实 ...

  2. Python调用C++ DLL库 ------OSError: [WinError 126] 找不到指定的模块。

    Python调用C++ DLL库 解决Python中 OSError: [WinError 126] 找不到指定的模块 的问题. 一.问题:   在进行Python开发的过程中,很可能遇到调用C++ ...

  3. Godot 3.4 AndroidStudio 联合开发配置 解决Godot apk签名 一库多key问题

    Godot 3.4 AndroidStudio 联合开发配置 & 解决Godot apk签名 一库多key问题 说明 签名问题 联动开发方法 注意事项 其他 说明 经修改源码增加 --alia ...

  4. Qt6程序打包(如何解决Qt程序在其他电脑上无法运行的问题)

    Qt6程序打包(如何解决Qt程序在其他电脑上无法运行的问题) 简单来说就是将Qt程序用release方式编译运行,然后用Qt自带的windeployqt工具生成对应依赖的dll文件,最后用Enigma ...

  5. 微信小程序调用Vant组件库

    微信小程序调用Vant组件库 Vant Weapp 微信小程序引入Vant Weapp 调用Vant Weapp组件 Vant Weapp 轻量.可靠的小程序 UI 组件库 链接: vant开发指南. ...

  6. 使用虚拟机自省技术在R0层监控获取进程调用的dll库和dll版本

    一.问题提出 在Windows操作系统中,dll属性查看的版本信息是在R3层获取的,如下图所示,在项目中经常要保证监控获取的透明性,能否在R0层直接获取这些信息? 二.libvmi简介 libvmi是 ...

  7. 解决VS编译生成的exe文件不能在其他电脑上运行的问题

    问题发现:电脑A上用VS生成的exe在B电脑上无法运行,如下图  解决方法:使用Release重新编译,但是出现了C4996问题,根据提示把access函数改为_access,把mkdir函数改为_m ...

  8. win7 u盘 正在计算机,U盘在Win7电脑上读不出来怎么办?两种解决方法全教给你!...

    在我们平日的工作或学习生活中,有很多小伙伴都会用U盘来存储学习或工作上比较重要的资料文件,虽然是现在使用U盘的小伙伴们是越来越少了吧,但是这也不能影响那些习惯使用U盘的小伙伴. 当我们想要处理U盘上的 ...

  9. 【转】将QT开发的界面程序封装成DLL,在VC中成功调用

    最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...

  10. C# 设置当前程序调用的dll文件以及其他文件的寻址路径

    文件: App.exe为主程序 A.dll为需要调用的bll文件 B.dll为需要调用的bll文件 一般情况下,我们的exe程序会调用一些dll. 由于项目可能较大,有很多的dll文件需要调用,并不可 ...

最新文章

  1. RecyclerView 使用指南
  2. Mybatis 基础 定义别名,属性配置
  3. HDOJ 1428 漫步校园
  4. ExtJs学习准备工作(二) firebug firefox插件的安装
  5. 阿里巴巴Java开发手册终极版
  6. 从零开始学习Node.js例子七 发送HTTP客户端请求并显示响应结果
  7. iphone字体大小设置_Win10电脑桌面上使用的记事本便签软件字体大小怎么调整?...
  8. collins词典第八版mdx_英语词典选择
  9. Android动态警示线,Android平台上辅助安全驾驶之线道侦测与偏离警示系统
  10. 使用bat脚本自动打开cmd并执行命令
  11. 蓝桥杯--算法提高 字符串跳步
  12. java faker_Java 生成测试字符串的库:Java Faker
  13. [Android]在Android TV中实现组合按键的监听触发功能
  14. 用STAR法则写简历
  15. ROS机器人的远程启动和控制过程
  16. java面试题-需要背的内容
  17. Mac配置mysql环境
  18. HAVING 子句的力量 和 HAVING 子句又回来了
  19. BootStrap---day02、03微金所项目
  20. 智慧旅游到全域旅游, 人们“旅游”的目的是什么?

热门文章

  1. linux服务器硬盘检测,Linux服务器硬盘坏道检测
  2. 解决Mac苹果旧电脑、更换过硬盘时升级10.13以上系统提示“验证估计时发生错误”导致无法升级、u盘重装、改时间、官方版本也不行的问题
  3. SQLServer中的 dbo
  4. excel两列数据对比找不同_25岁约基奇和25岁姚明得分数据对比,结果和想象中不同...
  5. 深度学习vs深度学习,到底嘛意思?
  6. 西电c1级计算机应用测试题型,西电计算机应用基础测试题
  7. java创建文件的路径_JAVA如何指定路径创建文件?
  8. 一个高手的趋势交易、量化交易系统思路
  9. GPIO设备虚拟文件结点的创建【转】
  10. CISSP知识点汇总(已完结并通过考试)