VS如何编译debug/release全版本的dll

时间:2021-07-07 09:27:00
在VS2013环境下,如何编译出一个Dll,即能在Deug下运行,也能在Release下运行。
是和运行时库相关吗?还是和/Zl相关?为何使用/Zl以后会有非常多的错误?
网上有许多dll直接可以加载进工程,即能在Debug下使用,也能在Release下使用,是如何做到的?

7 个解决方案

#1


本来标准dll就不分debug和release 能互相用

#2


引用 1 楼 akirya 的回复:
本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

#3


引用 2 楼 xyconly 的回复:
Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

#4


引用 1 楼 akirya 的回复:
本来标准dll就不分debug和release 能互相用

一般dll在Debug下。运行库选择“多线程调试 DLL (/MDd)”
release下。选择“多线程 DLL (/MD)”

#5


引用 3 楼 akirya 的回复:
Quote: 引用 2 楼 xyconly 的回复:

Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

也就是说在导出类的函数中添加__cdecl

#6


引用 5 楼 xyconly 的回复:
Quote: 引用 3 楼 akirya 的回复:

Quote: 引用 2 楼 xyconly 的回复:

Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

也就是说在导出类的函数中添加__cdecl

只能导出的是C函数,不能是类

extern "C" __declspec( dllexport ) void func( int ,char*)


导出类的就不是标准DLL了,就算编译出来了,能用不能用还是一回事。

#7


学会使用depends.exe查看exe依赖的dll

#1


本来标准dll就不分debug和release 能互相用

#2


引用 1 楼 akirya 的回复:
本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

#3


引用 2 楼 xyconly 的回复:
Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

#4


引用 1 楼 akirya 的回复:
本来标准dll就不分debug和release 能互相用

一般dll在Debug下。运行库选择“多线程调试 DLL (/MDd)”
release下。选择“多线程 DLL (/MD)”

#5


引用 3 楼 akirya 的回复:
Quote: 引用 2 楼 xyconly 的回复:

Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

也就是说在导出类的函数中添加__cdecl

#6


引用 5 楼 xyconly 的回复:
Quote: 引用 3 楼 akirya 的回复:

Quote: 引用 2 楼 xyconly 的回复:

Quote: 引用 1 楼 akirya 的回复:

本来标准dll就不分debug和release 能互相用

不太理解,如何使用VS2013编译一个标准的dll

只导出C函数即可,当然参数也必须是C能用的类型。

也就是说在导出类的函数中添加__cdecl

只能导出的是C函数,不能是类

extern "C" __declspec( dllexport ) void func( int ,char*)


导出类的就不是标准DLL了,就算编译出来了,能用不能用还是一回事。

#7


学会使用depends.exe查看exe依赖的dll