LNK2038、LNK2001

2023-12-30 18:20
文章标签 lnk2001 lnk2038

本文主要是介绍LNK2038、LNK2001,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在编译PCL的DLL版本是发生错误,配置环境为:pcl1.10.1、msvc2019。

错误列表:

控制台输出:

libboost_thread-vc142-mt-gd-x64-1_72.lib(tss_pe.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(tree.obj 中)

libboost_thread-vc142-mt-gd-x64-1_72.lib(tss_pe.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”(tree.obj 中)

libboost_thread-vc142-mt-gd-x64-1_72.lib(thread.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(tree.obj 中)

libboost_thread-vc142-mt-gd-x64-1_72.lib(thread.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”(tree.obj 中)

libboost_thread-vc142-mt-gd-x64-1_72.lib(thread.obj) : error LNK2001: 无法解析的外部符号 __imp__invalid_parameter
libboost_thread-vc142-mt-gd-x64-1_72.lib(thread.obj) : error LNK2001: 无法解析的外部符号 __imp__calloc_dbg
libboost_thread-vc142-mt-gd-x64-1_72.lib(thread.obj) : error LNK2001: 无法解析的外部符号 __imp__CrtDbgReport

无效CSDN解决办法:

 ①值“0”不匹配值“2”,Debug使用了Release下的库文件。

 ②值“2”不匹配值“0”,Release使用了Debug下的库文件。

      对于上述两种情况,只需要在预处理定义中设定其值使其符合要调用的程序即可。VS2010中,Debug模式下默认值为2,Release模式下默认值为0。

      对于情况一,只需在项目->属性->配置属性->C/C++->预处理器->预处理定义中添加“_ITERATOR_DEBUG_LEVEL=0"即可。

      对于情况二,只需在项目->属性->配置属性->C/C++->预处理器->预处理定义中添加“_ITERATOR_DEBUG_LEVEL=2"即可。

修改之后会套娃报错:

#error: _ITERATOR_DEBUG_LEVEL > 1 is not supported in release mode.

反正编译器就是不给你干活!

我的解决办法:

原因:根据提示可以知道咱们的运行库是不匹配的,它需要的是运行库是静态库,而当前设置的是动态库

在工程上右键 -> 属性 --> c/c++ --> 代码生成 --> 运行库改为:多线程调试 DLL (/MDd)

我编译的是DLL,如果你是exe就选择上面的多线程(/MTd)(具体还应该根据实际情形选择)

结果:编译通过!生成DLL文件

这篇关于LNK2038、LNK2001的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/553642

相关文章

QT编程中编译的时候出现c_jkdacx0.obj : error LNK2001: 无法解析的外部符号 class QTextCodec * GlobalCodec ?

QT编程中编译的时候出现c_jkdacx0.obj : error LNK2001: 无法解析的外部符号 "class QTextCodec * GlobalCodec" ? 求解

VS2022 错误 LNK2001 无法解析的外部符号

错误 LNK2001 无法解析的外部符号 “private: static struct std::once_flag ThreadPool::flag_” (?flag_@ThreadPool@@0Uonce_flag@std@@A) STL D:\VS2019\STL\源.obj 1 错误原因 :链接器无法解析 ThreadPool::flag_ 这个静态成员变量。这通常是因为静态成员变

VC6.0 error LNK2001: unresolved external symbol _main

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。   初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:   unresol

error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl ......

运行程序时,报如上图所示错误,其中一条是: ReflectionProbe.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl osg::Object::Object(bool)" (__imp_??0Object@osg@@QEAA@_N@Z)         报这个错误一般是因为使用了一些未定义或者

error LNK2038: '_ITERATOR_DEBUG_LEVEL'不匹配的解决办法

'_ITERATOR_DEBUG_LEVEL'不匹配的原因分析:         在VS2010的C++头文件(包括STL)里,都会包含yvals.h这个文件,而这个文件会定义: #pragma detect_mismatch("_ITERATOR_DEBUG_LEVEL", "xxxxxx") 其中,xxxxxx中的内容,会因为编译方式不同而不同。因此,链接两个使用不同编译方式的东西

error LNK2038: XXXXX 不匹配的原因

MSDN官网的解释,内容全英文:http://msdn.microsoft.com/en-us/library/ee956429.aspx     VC编译器在编译时,会把对象的name和value作为一条记录保存起来。在连接时,连接器会检查这些记录是否匹配。     语法是: #pragma detect_mismatch( "name", "value")) 注意:

编写音频播放SDL使用示例时,报MSVCRT.lib(exe_main.obj) : error LNK2001: 无法解析的外部符号 main

最近在弄本地音视频录制,需要将本地桌面,麦克风声音和系统声音混合在一起,写入文件。 本人先是将麦克风声音和系统声音混合在一起,然后再和桌面视频合成一起,结果生成的文件里面,杂音特别大,为此,想在程序里面,在麦克风声音和系统声音混合后,直接程序里面播放,这需要用到SDL。 本人直接在官网下载的SDL,地址如下: http://www.libsdl.org/download-2.0.php 然

error LNK2001: 无法解析的外部符号 解决方法

error LNK2001: 无法解析的外部符号 LNK1120: 1 个无法解析的外部命令 将工程中的字符集改为UNICODE字符集即可 工程->属性 在配置属性->常规中设置

error LNK2001: 无法解析的外部符号 的其中一种原因.

在某project 中加入了一个对话框,也生成了相应的类,之后编译,也在调用的MainFrm模块中include 了新的模块. 可以还是报下面的错. 1>MainFrm.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall CAlarmFilter::CAlarmFilter(class CWnd *)" (??0CAlarmFilter@

error LNK2001: 无法解析的外部符号 __imp__htonl@4(编程解决方法)

正在编译... 1>Ipv4IPv6traceroutesrc.cpp 1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(461) : warning C4267: “参数”: 从“size_t”转换到“DWORD”,可能丢失数据 1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp