社区
C++ 语言
帖子详情
静态库/MDd,LNK2019,谁知道?
tcige
2011-08-23 01:57:12
静态库:/MDd
void f() {
//printf(NULL);
//_snprintf(NULL, 0, NULL);
}
exe:/MTd,/NODEFAULTLIB:msvcrtd.lib
f()中用printf时,LNK4217
f()中用_snprintf时,LNK2019
...全文
136
4
打赏
收藏
静态库/MDd,LNK2019,谁知道?
静态库:/MDd void f() { //printf(NULL); //_snprintf(NULL, 0, NULL); } exe:/MTd,/NODEFAULTLIB:msvcrtd.lib f()中用printf时,LNK4217 f()中用_snprintf时,LNK2019
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tcige
2011-08-24
打赏
举报
回复
搜什么搜,你又不是做compiler/linker的,懂得会比我多?
至善者善之敌
2011-08-24
打赏
举报
回复
网上搜那几个选项的差别
tcige
2011-08-24
打赏
举报
回复
换什么换,又不是how,是why
crt就这样,谁懂linker的?
healer_kx
2011-08-23
打赏
举报
回复
那几个库来回换换了。
转载:已编译好的openssh库
可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以从 http://www.slproweb.com/products/Win32OpenSSL.html 下载 OpenSSL for Windows,直接安装。 P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下: 在OpenSSL安装目录的下的include/bn.h文件中,将 #define BN_ULLONG unsigned long long #define BN_ULONG unsigned long long #define BN_LONG long long 分别修改为: #define BN_ULLONG ULONGLONG #define BN_ULONG ULONGLONG #define BN_LONG LONGLONG 否则,会出现编译错误。 二、使用OpenSSL 在VC中配置使用以上的函数库: 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。 在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include"; "Library files"选择中新增目录"C:\openssl\lib"。 然后在需要链接OpenSSL函数库的工程中加入如下两句: #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") 其作用是将OpenSSL所需的库导入工程中。 三、问题 我在链接OpenSSL的静态函数库时遇到类似以下的问题: Linking... msvcrt.lib(MSVCRT.dll) : error
LN
K2
005: _strchr already defined in libcmtd.lib(strchr.obj) ... 这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。 调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下: 编辑文件 ms\nt.mak,将该文件第19行 "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE - D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 - DOPENSSL_NO_DYNAMIC_ENGINE" 中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。 四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明 《在VC中对C/C++ 运行时库不同版本编译指令说明》(http://blog.yesky.com/271/dgkang/1737771.shtml)一文中详细介绍了连接不同版本库的编译指令如下: C Runtime Library: /MD MSVCRT.LIB 多线程DLL的Release版本 /
MDd
MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB 纯托管代码 C++ Standard Library: /MD MSVCPRT.LIB 多线程DLL的Release版本 /
MDd
MSVCPRTD.LIB 多线程DLL的Debug版本 /MT LIBCPMT.LIB 多线程静态链接的Release版本 /MTd LIBCPMTD.LIB 多线程静态链接的Debug版本
一文带你弄懂Visual Studio:运行时库及MT/MTD、MD/
MDD
一文带你弄懂Visual Studio:运行时库及MT/MTD、MD/
MDD
引子什么是Runtime Library?Runtime Library和运行库 MT MTD MD
MDD
的关系静态链接的多线程库动态链接的运行时库
MDD
、MTD和MD、MT开发时注意事项1.在多工程开发时,所有的工程使用同一种运行时库。2.建议使用MD、
MDD
参考资料靓仔有话说 引子 在做vs开发的时候,一定会遇到一个问题,将在你自己电脑上编译的程序,拿到其他电脑上运行,经常会产生无法运行的情况,特别是你将你的程序拷贝到xp系统
VS编译器 :
LN
K链接错误汇总:
LN
K2
001 /
LN
K2
005 /
LN
K2
019
/
LN
K1120
VS编译期间遇到各式各样的链接
LN
K错误,作一汇总:
LN
K1120: 1 个无法解析的外部命令 这个问题的原因是有头文件,但是找不到实现。 有两个原因:1.只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp文件中的)。所以只能通过编译,连接不成功。 2.另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include...
LN
K2
019
的常见情况及解决方法
导致
LN
K2
019
的常见问题:(1)未链接的对象文件或包含符号定义的库(2)符号声明的拼写不与符号的定义相同(3)使用了函数,但类型或参数数目不匹配函数定义(4)声明但未定义的函数或变量(5) 调用约定是函数声明和函数定义之间的差异(6)符号定义在c文件中,但未使用extern C在c++文件中声明(7)符号定义为静态,并随后被外部文件引用(8)未定义类的静态成员(9) 生成依赖项仅定义为解决方...
VS2013运行库/MD、/
MDd
、/MT、/MTd
有段时间在写cuda程序是出现过 error
LN
K2
005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误 原因应该是在vs2010 工程属性中 c/c++的代码生成(code generation)中的设置与cuda c/c++ Host Runtime library不一样导致的。 后来在写opencv程序中的 findcontour()函数时...
C++ 语言
64,641
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章