VS2017 DLL动态库使用教程【七】为什么我的程序不能在别人电脑运行

vs2017静态库和动态库的创建与使用简明教程 vs2017静态库和动态库的创建与使用简明教程静态库创建和使用创建使用易错点动态库创建和使用创建使用注意DLL的好处Others 静态库创建和使用 创建 打开vs2017点击创建新项目,选择静态库; 在StaticLib.cpp文件下写实现,再创建一个对应的头文件写声明: 项目->生成 即可在输出文件夹下得到对应的lib文件: 使用 新建一个项目,点击属性,配置三条款项: VC++目录的包含目录和库目录分别加入lib对应头文件的位置和lib文件的位置; 链接器->输入 添 阅读详情

考虑一个很最最最简单的程序:

#include <stdio.h>
#include <Windows.h>
int main()
{
	printf("你好\n");
	system("pause");
	return 0;
}

将其编译,得到一个*.exe文件。

在本地自然可以顺便运行,有时候你刚刚做完一个这样的练习,迫不及待地要向朋友炫耀一下。一脸淫笑的你守在QQ旁正期待着赞扬的词汇,一边又脑补一下朋友的崇拜,可时间似乎凝固了,仿佛过了一个世纪后——“你发的这东西我怎么打不开啊?”

这是一个严重的问题!

你开始是质疑,是困惑,你觉得他脑子有问题连exe程序都打不开,又或觉得是win太复杂了,他不太适合给这些巨婴用,也许我应该做一个从新开发一个操作系统,然后吊打微软收购谷歌....正当你思考这些的时候,一张截图突然丢过来:

你震惊了,你搞不懂他为什么会发生这种情况,他已经超出了的知识范畴,至少你翻遍课本也找不出个解决方案。

你顿时倍感失落,发现竟然自己竟如此无力,刚刚还在思考等到驻进硅谷后给我五姑姑二弟的小侄子安排个什么工作好,顿时梦想破灭了,就如被戳破的肥皂泡,一切都成了过眼烟云....

好了,做梦结束,我没有什么朋友,上边的错报是我用win7虚拟机运行的结果。

为什么会这样呢?

原因是vs默认为动态编译。

在之前的教程里我们学了静态编译与动态编译的区别,我再把他搬过来:

静态编译在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库。

动态编译在程序编译时dll并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

因为我的虚拟机没有安装vs,电脑找不到程序使用的这个库(这个库是vs自带的),所以就没办法运行。

我们只需设置为静态编译即可,让dll写进exe内,没有外部库也可以运行。

然后重新编译即可。

对于vs来说:

静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib)。

动态编译,/MD,/MDd是指用相应的DLL版本编译。

其中字母含义  d:debug    m:multi-threading(多线程)    t:text代码    d:dynamic(动态)

值得注意的是,使用静态编译回让程序变大

vs2017配置opencv详细教程 vs上配置opencv的详细步骤。 阅读详情

相关推荐

vs2017生成dll动态库供java调取

一、利用eclipse等编辑工具创建项目dllTest 二、在src下面创建com包,在com包下创建Test1.java,且代码内容如下图: package com; import com.sun.jna.Native; import com.sun.jna.win32.StdCallLibrary; public class Test1 { publ

java_sunhui的博客 3392

【DLL动态链接库】解决自己编写的程序在别人的电脑上无法运行的问题

记录配置过程 原因 vs编译器默认是动态编译,我们需要配置成静态编译。 动态编译:在程序编译时dll不被连接到目标代码中,而是在程序运行是才被载入。 静态编译:在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库。 方法 以VS2017为例,点击debug(“调试”)——> Properties(解决方案的“属性”) 属性页面下选择Code Generate【“代码生成”】——>Runtime Library【“运行库”】下的Multi-threaded Debug(/.

m0_46296905的博客 3478

VS2017+QT生成动态库(DLL)并完成调用

一、环境介绍 QT版本: 5.12.6 VS版本: 2017 二、功能介绍 在VS2017环境下创建QT工程,并生成DLL库;然后再创建工程调用测试。 其他链接: Win10+vs2017+QT5.12.6开发环境搭建:https://blog.youkuaiyun.com/xiaolong1126626497/article/details/112402861 Window系统下QT5创建DLL动态库并完成调用:https://blog.youkuaiyun.com/xiaolong1126626497/ar...

4970

OpenCV/C++/vs2017环境下写的dll给C#调用,自己电脑可以调用,但是别人电脑不可以

问题: OpenCV/C++/vs2017环境下写的dll给C#调用,自己电脑可以调用,但是别人电脑不可以 报错: 解决方法: 1、以前学习的时候是看视频教学的,别人引用了opencv包下面的vc14,我就也用了,后来发现vs2017要引用vc15 2、对比了别人成功调用的dll,在设置方面,属性—>C/C++—>代码生成—>运行库—>多线程DLL—>确定 3、看了...

weixin_42856569的博客 1109

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3795

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1384

Keil5工程编译不通过,但在别的电脑上可以

PS:我同事也是用2.02版本,但他们可以编译通过,而到这里却不行,必须要用低一版,具体是什么原因我也不太清楚,希望有大佬讲解一下!最近接手了我同事的项目,但这个工程在我的电脑上编译报错。1.安装一个固件包(必须比你当前会报错的这个低)...

weixin_46340255的博客 1870

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 564

工程代码一致别人可以正常调试,自己的确崩溃

问题描述: 一个项目里有n个工程,其中的工程和别人的一样,都是从SVN上荡下来的,但是自己的一个Dll编译后,只要调试,必定崩溃。 然后 自己查看了工程配置,revert了所有的代码,但是依旧无效,关键是所有的lib、dll、配置文件等等,版本什么的都和别人的一样…………超级扯淡………… 最后自己没有办法了,重新从SVN上下一份代码,然后编译就ok了………………真鸡毛奇怪。 ...

Ma_Hong_Kai的博客 350

Android P车机添加屏幕多指全局自定义手势操作

参照原生状态栏全局下拉手势拦截,实现屏幕全局多指手势响应操作,并对手势进行转换为KeyEvent,以便项目自定义手势行为或应用拦截手势行为。

shusuanly的博客 1253

阿波罗开发板硬件架构与STM32模块化设计详解

嵌入式开发板的模块化设计是提升硬件复用性、降低迭代成本的关键技术路径。其核心在于底板与核心板的电气解耦与功能分层,依托STM32系列MCU(如F429/F767)的丰富外设资源与引脚复用能力,实现信号完整性、电源域隔离与热管理的系统级协同。该架构显著支撑工业HMI、智能家居网关、便携医疗设备等典型场景,尤其在RGB LCD驱动、QSPI Flash内存映射、多协议通信(CAN/RS485/USB)及低功耗唤醒(WK_UP按键)等工程实践中展现出高可靠性与易调试性。本文围绕阿波罗开发板展开深度解析,覆盖最小系

weixin_42510201的博客 64

如何生成dll文件 采用VS2017生成dll文件(动态库文件)和lib文件(静态库文件)以C语言为例

下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件) 生成动态库文件 姿势一: 第一步:新建一个项目 第二步:选择Windows桌面向导(这里先不要去管上面的“动态链接库(DLL)”) 第三步:选择动态链接库,并空项目打勾√ 第四步:添加一个.c源文件 第五步:(因为这里以C语言为例子,将后缀改为.c) 第六步:在c文...

weixin_40933653的博客 1万+

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战]

TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te..

互动教程网[www.hdjc8.com] 832

如何用OpenCV实现一个简单功能并打包成一个dll动态库,然后在unity里面调用

       写这篇博​​客是因为最近要完成一些小任务,想把自己做的记录下来,希望能不断进步吧。如果有不对的地方,希望大家指正。        在这里我用的是VS2017 + Unity2018.2 + OpenCV3.4.0,其他的过程应该也会相同吧,大家自己琢磨琢磨好了。 一,下载OpenCV的并配置VS2017环境 1,OpenCV中的下载和配置可以参考这一篇博客,写的很详细也很有用。...

毛毛的博客 3553

SAR图像降噪:基于小波变换和双边滤波器的Matlab实现

小波变换和双边滤波器是常用的图像降噪技术,它们可以在保持图像细节的同时有效抑制噪声。本文介绍了基于小波变换和双边滤波器的SAR图像降噪方法,并提供了相应的Matlab源代码。通过对比原始图像和降噪后的图像,可以观察到噪声得到一定程度的抑制,同时保留了图像的细节信息。本文将介绍一种基于小波变换和双边滤波器的方法,用于SAR图像的降噪,并提供相应的Matlab源代码。希望这篇文章能够帮助您理解基于小波变换和双边滤波器的SAR图像降噪方法,并为您提供实现该方法的Matlab源代码。对图像的高频部分进行降噪处理。

ScriptCharm的博客 841

3. UFS 电气时钟、复位、信号和电源

当接收到用于从 HS-MODE 到 LS-MODE 转换的 DME_POWERMODE.ind 或用于从 HS-MODE 到 HIBERN8 转换的 DME_HIBERNATE_ENTER.ind 时,UFS 主机可以启动一个计时器。在整个 PA_INIT 过程中,不应门控参考时钟。如果 UFS 主机启动从 HS-MODE 到 LS-MODE 或 HIBERN8 的电源模式更改,则应确保在关闭参考时钟之前,至少已经经过了由 bRefClkGatingWaitTime 定义的最小时间间隔,见图 6.3。

qq_42238448的博客 1293

VS2017 用MFC调用QT 带界面的动态库DLL

本文主要参考https://blog.youkuaiyun.com/shuishanga/article/details/52183159文章, 本文与其相似很多。 主要是平台不一样,记录下实现过程。 VS平台:VS2017 QT:5.11.2 目的:使用MFC 调用QT动态库。 使用到的辅助文件qtwinmigrate,可以在这个网址下载。https://github.com/qtpro...

u012512100的博客 3469

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

vs2017创建c++动态库工程

开发环境:VS2017、WIN10。 1、vs2017动态库工程创建 文件->新建->项目。新建项目页面中选择,Visual C++->Windows桌面,选择右侧的空工程,添加名称及位置,点击"确定",创建工程。 解决方案平台选:Debug, x64。注意:发布时,选择Release模式。 菜单栏上,项目->属性,进入属性页管理。配置属性->常规,配置类型改为"动态库(.dll)",点击应用、确定。完成工程配置。...

alex1801 4159

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VS下生成C程序静态库(LIB)及动态库(DLL)的方法

一、前言 工作中有时候因为分工合作的原因需要让别人调用自己写的代码去完成某项功能,但是又不想让别人看到具体的实现过程,只是提供一个API形式的接口供别人调用;又或者是其他的一些原因,有必要学习静态库及动态库的相关知识,本文大多数内容均为参考网上资料后的整理,作为学习的总结。 二、DLL与LIB文件的区别 lib是一个二进制文件,与dll类似,供其他程序调用。lib与dll的区别是:dl...

心城追梦的博客 9874

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vs2017下创建使用动态库。

动态库又称为动态链接库,DLL(Dynamic Link Library)的缩写形式。 动态库是一个包含可由多个程序同时使用的代码和数据的库。 在vs2017创建并使用动态库 1,创建项目 2,在头文件处新建自己的头文件 选中头文件 按Ctrl+Shift+A创建新建项 在add.h中加入一些代码 #pragma once和#ifndef...#endif 都...

GoingJack博客 2658

VS2017利用dumpbin工具查看exe和dll的依赖项或提供的API

在编程过程中不可避免的会调用DLL,我们怎么知道我们所调用的DLL提供了哪些API接口呢。 打开命令终端 点击VS2017提供的“选择适用于VS2017的x86_x64兼容工具命令提示”,如下图所示: 这里我电脑上安装的是VS2017企业版。 查看DLL的提供了哪些接口API dumpbin使用方式:dumpbin 选项 文件名 这里我查看自己生成的一个DLL(libdevdpuEx.dll...

mengmeng0510的博客 1万+

【VisualStudio 2017动态库(.dll)生成与使用】

Windows下 VisualStudio 2017 C++ 动态链接库的生成以及使用提示:以下是本篇文章正文内容,下面案例可供参考以上就是生成动态库并调用的方法。参考文章:blog。

weixin_53662528的博客 1889

VS2017 动态库(dll)的制作和调用

参考文献: https://blog.youkuaiyun.com/shimadear/article/details/89202714 https://blog.youkuaiyun.com/Lunar_Queen/article/details/82872157 http://www.runoob.com/w3cnote/cpp-static-library-and-dynamic-library.html 1.文件...

tpz789的博客 6885

使用VS2017创建动态库dll和静态库lib并链接至其他项目中

转载: 静态库:https://jingyan.baidu.com/album/f0e83a256230ea22e4910163.html?picindex=14 动态库:https://blog.youkuaiyun.com/cynophile/article/details/79749524 这篇是动态库内容 启动VS2017,点击菜单栏上的“文件->新建->项目”创建一个新的开发项目...

qq_38409301的博客 2527

VS2017 CUDA10.1 DLL封装及调用方法

为了调用方便和减少每次都没写.cu文件的麻烦和出错的几率,可以将编写好的CUDA并行程序生成dll动态库,每次使用是只需调用库的接口,省时省力,也便于集成到其他平台上。 环境:Win10,VS2017,CUDA10.1 封装动态库 启动VS2017,创建新项目 生成的工程如下,我们主要在CudaDll.h和CudaDll.cpp中进行修改 根据自己的目的修改CudaDll.h和CudaDll...

benobug的博客 2177
上一篇: VS2017 DLL动态库使用教程【六】动态加载DLL
下一篇: VC++ XML读写随笔【一】xml基本格式
崔佳宇_
崔佳宇_ 优质创作者: 嵌入式与硬件开发技术领域 优质创作者: 嵌入式与硬件开发技术领域
博客等级 码龄10年 1万+粉丝 173原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值