问题标签 [linker-warning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
63430 浏览

c++ - LNK4075:由于“/OPT:ICF”规范而忽略“/EDITANDCONTINUE”

我最近将多项目 Visual Studio 解决方案转换为对每个项目使用 .dll 而不是 .libs。但是,我现在收到示例中所述的每个项目的链接器警告。MSDN 对此并没有太大帮助。为什么会这样,我该如何解决?

警告 2 警告 LNK4075:由于“/OPT:ICF”规范而忽略“/EDITANDCONTINUE” LudoCamera.obj

0 投票
5 回答
7382 浏览

c++ - 标头护罩和 LNK4006

我在标题中定义了一个字符数组

如果 #defined 受到保护,并且顶部有一个 #pragma ,则标头。如果此标头包含在多个位置,我会得到一个 LNK4006 - char const * * temp 已经在 blahblah.obj 中定义。所以,我有几个关于这个的问题

  1. 如果我有防护装置,为什么会发生这种情况?我认为他们在第一次访问后阻止了标头被读入。
  2. 为什么此标头中的众多枚举也没有给出 LNK4006 警告?
  3. 如果我在签名之前添加静态,我不会收到警告。这样做有什么影响。
  4. 有没有更好的方法来避免错误,但让我在标题中声明数组。我真的很讨厌只为数组定义创建一个 cpp 文件。
0 投票
2 回答
7758 浏览

gcc - 你如何抑制 GCC 链接器警告?

我最近一直在努力消除我们代码中的警告,并且更加熟悉 GCC 警告标志(例如-Wall-Wno-<warning to disable>-fdiagnostics-show-option等)。但是我无法弄清楚如何禁用(甚至控制)链接器警告。我得到的最常见的链接器警告是以下形式:

我得到这个的原因是因为我使用的库是使用default可见性构建的,而我的应用程序是使用hidden可见性构建的。我已经通过重建具有hidden可见性的库来解决这个问题。

不过我的问题是:如果我愿意,我将如何抑制该警告?现在我已经知道如何修复它,这不是我需要做的事情,但我仍然很好奇您将如何抑制该特定警告 - 或一般的任何链接器警告?

-fdiagnostics-show-option用于任何 C/C++/链接器标志并不能像其他编译器警告一样说明该警告的来源。

0 投票
1 回答
2163 浏览

c - dlerror:FreeBSD 7.2 上的未定义符号“_nss_cache_cycle_prevention_function”

我有一个 ANSI C 程序,它使用传递 RTLD_LAZY 的 dlopen() 动态加载 .so 文件。我收到

每当在 FreeBSD 7.2 中访问 .so 文件时都会发出警告。nss_cache_cycle_prevention_function() 不是我程序的功能之一,我想一定来自 FreeBSD。这在 Linux 上也可能是一个问题,尽管我在那里没有遇到这个问题。我不希望将 FreeBSD 特定的头文件加载到我的程序中。我想以可移植的方式包含此功能或禁止显示这些警告。

0 投票
1 回答
5855 浏览

c++ - Visual Studio C++ 链接器警告:带有 C 运行时 (CRT) 的 LNK4006

我要问这个问题,然后自己回答。我知道这是一个新手问题,但我花了大约。两天找到正确答案,无论如何我都会发布它。

免责声明就这么多——这个是献给所有新手的:

我在 VS 2010 中做了一个 MFC 项目,我需要添加一些第 3 方静态库。一切顺利,两个项目都已编译,我的项目设法引用了该库。然后,当我在项目中包含库中的一些头文件时,我收到了许多关于 C 运行时库中函数的链接器警告,例如:

警告 9 警告 LNK4006:_sprintf 已在 libcmtd.lib(sprintf.obj) 中定义;第二个定义被忽略 C:path\to\my\project\MSVCRTD.lib(MSVCR100D.dll)

想着'这到底是什么',我尝试运行我的项目,它确实运行了,直到它遇到一个试图使用'fostream'写入某个文件的代码行,然后它因一些可怕的堆损坏异常而崩溃。

搜索 SO,我遇到了一些相关的问题,没有一个完全符合我的问题:

在我偶然发现答案之前,我几乎将外部库包装在一个 dll 中。

0 投票
2 回答
13497 浏览

c++ - Visual Studio 链接器警告 LNK4098

我有一个 dll 项目,在发布配置中构建项目时,我收到以下警告:

MSVCRT.lib(cinitexe.obj):警告 LNK4098:defaultlib 'msvcrtd.lib' 与其他库的使用冲突;使用 /NODEFAULTLIB:library

这只是一个警告,但我不知道是否应该考虑到这一点。

根据我的发现,它们都是多线程库、正常版本和调试版本。我的 dll 使用多线程,我可以调试它,虽然我使用 boost:thread ,所以我真的不知道我是否需要这个 Windows 特定的库来调试或发布构建......

亲切的问候,亚历克斯

好吧,我按照 BuschnicK 的建议做了,并使用 /VERBOSE:LIB 链接器标志发现我在调试配置中链接到这些库:

boost_filesystem-vc100-mt-gd-1_44.lib:libboost_system-vc100-mt-gd-1_44.lib:libboost_thread-vc100-mt-gd-1_44.lib:libboost_date_time-vc100-mt-gd-1_44.lib:

我在发布配置中也有同样的情况,主要是因为我没有“明确地”指定。因此,我在 Release 中将它们更改为:

boost_filesystem-vc100-mt-1_44.lib: libboost_system-vc100-mt-1_44.lib: libboost_thread-vc100-mt-1_44.lib: libboost_date_time-vc100-mt-1_44.lib:

这似乎有效,但我仍然收到第一个警告,直到我意识到我的发布配置中也有 _DEBUG 预处理器定义,删除它并且它现在工作正常。

谢谢大家的帮助!!

0 投票
2 回答
4466 浏览

iphone - Xcode -- 带有库的链接器警告 -- Debug-iphonesimulator 与 Debug-iphoneos

我正在构建一个带有库的项目。我正在制作的版本是调试版本。该库将自身构建到以下目录中:

LibraryPath/build/Debug-iphoneos

当我链接我的主项目时,我收到以下警告:

未找到 -L 之后的目录“LibraryPath/build/Debug-iphonesimulator”

Xcode 找到了所有内容,并且构建工作正常,但是警告很烦人。我怎样才能摆脱它?

0 投票
1 回答
1411 浏览

c++ - ZLib.lib(d000062.o):警告 LNK4078:发现多个具有不同属性的“.text”部分

我从他们的网站下载了 zlib,并且标题中出现了链接警告。我还编译了 zlib 并且仍然有相同的警告。你知道我该如何解决这个问题吗?我不喜欢在我的项目中发出任何警告:)

我使用 Visual Studio 2010。

0 投票
2 回答
1336 浏览

cmake - 如何使用 cmake 删除 --enable-auto-import 警告

我收到此链接器警告。我如何使用cmake修复它?这是我的根 CMakeLists.txt:

0 投票
2 回答
9493 浏览

mysql - 针对 mysql-connector-c/libmysqlclient/mysql C API 构建应用程序时的链接器警告

我正在尝试从源代码(根据此处的说明)构建 mysql-connector-c 并静态链接到我的应用程序中的库。但是,我收到以下警告,我想知道是否有人对为什么会这样有任何想法:

以下是一些相关的参数/标志:

为了构建库,CMake 正在传递以下内容:

-G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/path/to/my/install/root -DCMAKE_C_FLAGS="-m64" -DCMAKE_CXX_FLAGS="-m64"

用于构建应用程序: