问题标签 [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 投票
2 回答
5872 浏览

assembly - 用 alink 链接 .obj 文件

我为 win64 编写了一个 helloworld 程序,并使用 nasm 将其转换为 .obj 文件...现在我必须使用 alink 加载生成的 hello.obj 文件,但错误正在裁剪...

组装我使用了命令

(这执行成功)

并加载我正在写

但不断显示的错误是

然后一旦我写了 -f win32 而不是 -f win64... 然后当我为 alink 执行相同的加载代码(即 alink hello.obj)时,屏幕上写道

helloworld.asm 文件在这里

0 投票
1 回答
198 浏览

c++ - VS2010 链接警告

我在 Windows 7 上运行 VS2010 Express for C++。在最新一轮更新之前,一切都在编译和链接。现在我收到了一系列形式的链接警告:

libcpmt.lib & libcpmt.pdb 在 Visual Studio lib 目录中,所以我只能推测存在某种类型的路径问题。有没有其他人已经/解决了这个问题?

0 投票
2 回答
1949 浏览

objective-c - Xcode/clang:为什么我的一些(不是全部)标题给出“警告:没有规则为架构 arm7 处理文件 xxx”

我正在 Xcode 4.2/Lion 上使用 clang 构建一个带有 ARC 的 iOS 5 应用程序。对我来说,好的做法是尽可能多地消除警告,但我迷失了这一点。该应用程序有很多类,但它们的头文件数量有限(8 个或 9 个)会给出如下链接器警告:

我没有看到这些标头有任何重要的共同点:有几个是第 3 方 OSS 代码;其余的都是我自己的。一个是纯 C 头文件(没有对应的 .c),只包含常量#defines和枚举;几个是用 Xcode 的模板创建的子类UIViewUIViewController其余的是普通的 Obj-C 类,其中一些继承自NSObject,而另一些则不继承。所有(我的课程)都是在不同时间在项目中从头开始创建的。较旧和较新的课程都不会发出警告。

我的项目混合使用了 C++、Objective-C++ 和 Objective C 类。这里生成警告的类主要是 Objective C(它们的实现在 .m 文件中),但是两个 3rd 方类是在 Objective C++ (.mm) 中实现的。

否则,该项目构建良好并在模拟器和 iDevices 上运行。

令我感到羞耻的是,我对 Xcode 中的项目设置页面并不是特别熟悉。我希望解决方案包含在某个地方,但我不确定从哪里开始而不破坏事物。

0 投票
4 回答
796 浏览

c++ - 为什么 g++ 链接器不警告这种不一致的函数声明?

这是使用 g++ 4.4 和 g++ 4.7 在 Debian Squeeze 上测试的。考虑两个 C++ 源文件。

如果我编译并运行它,可以预见会有问题。我正在使用scons。

编译并运行...

哇。如果链接器已警告foo以两种不同的方式声明,则可以避免这种情况。即使-Wall没有。那么,是否有它不这样做的原因,是否有一些标志可以打开以使其发出警告?提前致谢。

编辑:感谢所有的答案。当存在冲突的函数定义时,链接器确实会发出警告,而不是像我上面的示例中的冲突函数定义和声明。我不明白这种不同行为的原因。

0 投票
2 回答
5745 浏览

c++ - How do I approach this Linux C++ warning? "can't find linker symbol for virtual table for `sockaddr_in'"

Ubuntu 10.04 32-bit, eclipse, C and C++

I have a program that uses select() to monitor a bunch of TCP and UDP ports. I create those ports in the usual way (socket(), bind(), listen(), accept() etc.) using sockaddr_in structures.

The program works fine at the command line. I was using the eclipse debugger to fix a bug (fixed now!) when I noticed the following warning:

Well, after fixing my bug I checked and the warning persisted.

I know that the warnings commence as soon as I enter my ConfigureServer() routine where the ports/sockets get connected. The sockaddr_in structures are declared in the routine and are on the stack. In fact, nothing in the program is yet in the heap. This is a mix of C and C++ with no objects declared or used up to this point.

This is the beginning odf the routine. There are several additional identical bits for other ports.

So, my question is, how do I debug and track down the cause of these warnings.

Thanks,

0 投票
1 回答
488 浏览

c++ - 类未定义引用

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

这应该是一个简单的问题,但我仍然有问题。我看过类似的问题,但它们似乎比我要找的要复杂一些。

我正在使用 Code::Blocks 10.05。

我收到了对我的类文件的未定义引用。我知道这是一个链接器错误,但我不确定如何修复它。我很害怕我对链接文件不太了解。

我所有的文件都在同一个文件夹中。我的对象什么都不做,我只是在尝试,我不应该因为从另一个类创建对象而出错。

是的,这是来自 TheNewBoston 的教程......他能够完成这项工作,所以我应该能够让它工作。

如果我包含#include "Burrito.cpp"在 Class2.cpp 中,那么它可以工作,但他没有包含。


------------Class2.cpp------

---------------Burrito.h----------------

---------------Burrito.cpp------

0 投票
2 回答
4294 浏览

android - 摆脱 wchar_t 大小链接器警告

我用-fshort-wchar. 我知道 RTL 假定为 4 字节 wchar_t,我知道我在做什么,图书馆工作。但是,在每个构建链接器上,每个目标文件都会给我以下警告:

ld.exe:警告:MyFile.o 使用 2 字节 wchar_t 但输出是使用 4 字节 wchar_t;跨对象使用 wchar_t 值可能会失败

当我提供

这给了我一个“无法识别的选项”错误。

0 投票
2 回答
40678 浏览

c++ - 'LIBCMT' 与使用其他库 + 未解析的外部符号冲突

我有一个使用 OpenGL 3.2(+libs) 和 FreeType2 的程序。然后是另一个带有 Boost 和 OpenSSL 的程序。OpenGL 方面是为了确保文本可以被渲染,而 boost/openssl 程序是为了做一个安全的登录/游戏服务器。

这两个程序都可以正常工作。

然而,将 Boost 和 OpenSSL 添加到游戏(GL + freetype)项目导致它无法链接。

我已经链接了以下库以及包含文件夹。

glimg.lib glutil.lib glfw.lib opengl32.lib freetype.lib glew32.lib user32.lib libeay32.lib ssleay32.lib

链接器错误是。

运行时库设置为多线程 DLL (/MD)

我不知道该怎么做我真的很感激任何帮助。

0 投票
1 回答
3698 浏览

visual-studio-2010 - 警告 MSB8012 - 链接器的 OutputFile 属性值 ()

警告 MSB8012

我已经阅读了很多人询问这个错误的答案,但他们似乎都没有遇到像我这样的问题。我试图在我的项目中使用属性表来节省每次都必须设置属性设置,反过来我在构建时得到了这个:

如果我所要做的只是更改链接器的 OutputFile 属性值,那会很容易,但是正如您所看到的,它Linker's OutputFile property value ()每次都说(OutputFile 值为 null?),这有点不同,$(OutDir)$(TargetName)$(TargetExt)我将其设置为...

我在属性表中配置的唯一内容是一些调试设置、一些优化设置、添加构建后事件和禁用 unicode。这就是我所需要的,但这个问题现在卡在项目中,即使我删除了属性表。我根本没有从以前版本的 Visual Studio 转换项目,就像许多收到此警告的人一样,只是尝试添加和配置属性表。

以下是一些相关设置:

常规->输出目录:$(SolutionDir)$(Configuration)\

常规->目标名称:$(ProjectName)

常规->目标扩展:.dll

链接器->输出文件:$(OutDir)$(TargetName)$(TargetExt)

起初我只是想忽略这个警告,但它实际上开始引起问题,所以如果有人能弄清楚这个 MS 谜题,我将不胜感激。

0 投票
1 回答
5266 浏览

visual-studio - 将调试版本链接到发布库:警告 LNK4204

我正在使用 VC10(但我想这适用于 VC9、VC10 和 VC11)。简而言之,我想编译一个发布库,发布它并允许用户在对其应用程序进行调试或发布构建时能够链接到该库。令人讨厌的是,我不断收到 LNK4204 错误,例如:

美好的。我明白这是在说什么。我最初的反应是“好吧,关掉它会很简单”。但是我找不到阻止这种情况的方法。让我吃惊的是:

  1. 我在库项目设置中找不到任何选项,可以在没有调试信息的情况下进行编译(即使在发布中!)——老天,我可以发誓有办法!
  2. 我在用户应用程序项目设置中找不到任何选项来指示链接器我知道没有调试信息,它应该继续执行它所告诉的操作!

有什么好的解决办法吗?据推测,想要链接到没有调试信息的库但为我正在创建的二进制文件生成调试信息的情况并不少见?链接到内核库和 crts 怎么样,肯定会发生这种情况吗?我不敢相信我以前从未发现过这个问题,这似乎很明显(你能说我很生气吗!)。

仅供参考,在人们说之前,我真的不想发布带有调试信息的发布库,因为我想尽量减少逆向工程的风险。我知道有些人会说当用户遇到错误并且您没有 pdb 信息时您会后悔,但是当我说我不在乎时请相信我。

更新:

我相信我已经解决了这个问题,但我不完全确定它为什么会起作用。肯定需要再研究一下。但简而言之,我可以(实际上需要)使用 VC9 构建。请注意,VC9 实际上为“Debug Information Format”提供了一个额外的“Disabled”选项,VC10 中并未出现该选项;这可以解释我的一些困惑。

现在“解决方案”似乎是创建库的调试版本(我很好),但保持调试信息“禁用”。当我这样做时,我没有任何抱怨。这很奇怪,因为在这两种情况下都没有调试信息(将调试链接到发布和调试到调试的情况),但是当链接到调试库时,我没有收到任何警告。到目前为止,这有点神秘。如果我有时间,我会进一步调查。也许我错过了什么!