VS如何根据debug和release生成来自动选择相应的lib

0

RT,问题可能不是很明确,但我能表达的意思就到这了,感谢

ava
无名氏

2020-2-5

0

通过宏定义。

举个例子:
1.MD5静态库

// MD5.h部分代码
#ifndef _LIB // 仅在库导入时选择链接lib
#ifdef _DEBUG
#pragma comment (lib,"MD5d.lib")
#else
#pragma comment (lib,"MD5.lib")
#endif
#endif // !_LIB 

如果只是导入一个库,不考虑兼容导出,把_LIB层去掉即可;

2.再来一个动态库的例子

#ifdef MY_DLL_EXPORTS
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#ifdef _WIN64

#ifdef _DEBUG
#pragma comment(lib,"lib/MY_DLLd_x64.lib")
#else
#pragma comment(lib,"lib/MY_DLL_x64.lib")
#endif	// _DEBUG

#else

#ifdef _DEBUG
#pragma comment(lib,"lib/MY_DLLd.lib")
#else
#pragma comment(lib,"lib/MY_DLL.lib")
#endif	// _DEBUG

#endif	// _WIN64

#endif	// MY_DLL_EXPORTS

这里包含了x86/x64 Debug/Release的选择。不过,一般来说,装在库目录里的x86/x64的静态库,编译器会根据平台选择不同目录。

3.更进一步,可以选择UNICODE/ANSI,比如EasyX库

#ifdef UNICODE
	#pragma comment(lib,"EasyXw.lib")
#else
	#pragma comment(lib,"EasyXa.lib")
#endif
ava
OhtoAi

2020-2-8

技术讨论社区