问题标签 [linker]
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.
visual-c++ - 为什么我在 Visual Studio 中编译 C++ 项目时会出现致命错误“LNK1104:无法打开文件 'C:\Program.obj'”?
我在 Visual Studio 2008 中创建了一个新的 C++ 项目。尚未编写任何代码;只有项目设置已更改。
当我编译项目时,我收到以下致命错误:
致命错误 LNK1104:无法打开文件 'C:\Program.obj'
visual-studio - Visual Studios Link.exe 错误:“额外操作数”
我们的构建过程使用 Visual Studios 2003 link.exe 进行链接。在一台机器上,我们看到以下错误:
它似乎使用与其他机器相同版本的视觉工作室。有没有人遇到过这个问题?
linux - linux动态链接器的“没有可用的版本信息”错误是什么意思?
在我们的产品中,我们发布了一些动态链接到“libpam”等系统库的 linux 二进制文件。在某些客户系统上,当程序运行时,我们在 stderr 上收到以下错误:
应用程序运行良好并执行动态库中的代码。所以这不是一个致命的错误,它实际上只是一个警告。
我认为当系统安装的库缺少我们的可执行文件期望的东西时,这是来自动态链接器的错误。我对动态链接过程的内部了解不多......并且谷歌搜索该主题并没有多大帮助。:(
有谁知道是什么导致了这个错误?...我如何诊断原因?...以及我们如何更改可执行文件以避免此问题?
更新:客户升级到最新版本的debian“测试”,出现同样的错误。所以它不是一个过时的 libpam 库。我想我想了解链接器在抱怨什么?我如何调查根本原因等?
python - 将Python编译成机器码可行吗?
将 Python(可能通过中间 C 表示)编译成机器代码有多可行?
据推测,它需要链接到 Python 运行时库,并且 Python 标准库的任何部分本身就是 Python 也需要编译(和链接)。
此外,如果您想对表达式进行动态评估,则需要捆绑 Python 解释器,但也许不允许这样做的 Python 子集仍然有用。
它会提供任何速度和/或内存使用优势吗?大概 Python 解释器的启动时间将被消除(尽管共享库仍需要在启动时加载)。
linux - #defines 在链接器脚本中
对于嵌入式系统,我需要在固定地址放置一些数据结构,以便单独的控制 CPU 可以在已知位置访问它们。我正在使用嵌入式目标的链接器脚本来完成此操作,以及控制 CPU 的相同地址的#defines。
令我困扰的是,这些地址常量是在两个地方定义的,链接描述文件和头文件。我想只有一个。到目前为止,我想出的最佳解决方案是让 Makefile 在链接器脚本上运行 cpp,允许它#include 相同的标头。
有没有更好的方法来实现这一点?ld 是否有一些鲜为人知的选项或链接器脚本的命名约定,它将自动通过 cpp 运行它?
c++ - Unable to link to shared library
I'm building a shared library with g++ 3.3.4. I cannot link to the library because I am getting
Which c++filt describes as
I thought this might have come from using hash_map, but I've taken that all out and switched to regular std::map. I am using g++ to do the linking, which is including -lstdc++
.
Does anyone know what class would be instantiating this template? Or even better, which library I need to be linking to?
EDIT: After further review, it appears adding the -frepo flag when compiling has caused this, unfortunately that flag is working around gcc3.3 bug.
gcc - 链接器问题 - 未定义的引用
我的编译器有问题,告诉我有一个“未定义的引用”我想在库中使用的函数。让我分享一些关于这个问题的信息:
- 我正在使用 gcc for C 进行交叉编译。
- 我正在调用一个库函数,该函数通过包含的标头访问,该标头包含另一个包含原型的标头。
- 我已经使用 -I 包含了 headers 目录,并且我确定它已被找到。
- 我首先创建 .o 文件,然后将它们链接到单独的命令中。
所以我的想法是这可能是我包含库文件的顺序,但我不确定订购它们的正确方法是什么。我尝试在 .o 文件之前和之后包含 headers 文件夹。
一些建议会很棒,也许还有对链接器如何做事的解释。
谢谢!
对答案的回应
- 没有 .a 库文件,只有 .h 和 .c 在库中,所以 -l 不合适
- 我对库文件的理解是它只是头文件和源文件的集合,但也许它是从源创建的 .o 文件的集合?!
- 没有创建库目标文件,也许应该有?是的,似乎我不明白包含和库之间的区别......我会努力的:-)
感谢所有的回复!我学到了很多关于图书馆的知识。我想把所有的回复都作为接受的答案:-)
c++ - 为什么我的引用传递的参数没有在函数内修改?
我在静态库中有一个 C 函数,我们称它为 A,具有以下接口:
这个函数将改变 y 和 z 的值(这是肯定的)。我在动态 C++ 库中使用它,使用 extern "C"。
现在,这让我感到震惊:
- y 设置正确,z 没有改变。我的意思是,如果两者都使用(指向)值 666 进行初始化,则 y 指向的值将在调用后发生变化,但不会更改 z 指向的值(仍为 666)。
- 当从 C 二进制文件调用时,此函数可以无缝工作(修改 z 指向的值)。
- 如果我创建一个具有相同原型的函数的虚拟 C 库,并在我的动态 C++ 库中使用它,它工作得很好。如果我重新使用相同的变量来调用 A(..),我会得到与以前相同的结果,z 不会改变。
我认为以上几点表明我的变量声明并不是一个愚蠢的错误。
我显然被卡住了,我无法更改 C 库。您对可能是什么问题有任何线索吗?我正在考虑 C/C++ 接口上的一个问题,例如 char* 的解释方式。
编辑:我终于发现了问题所在。请看下面我的回答。
visual-studio-2008 - 奇怪的 MFC / VC++ 链接器错误 (std::list已经定义)
我收到了一条非常奇怪的错误消息,仅在我将以下行添加到我的项目时才会出现:
值得注意的是,它不一定是 std::list,它可以是 std::vector 或我假设的任何其他 STL 容器。
这是错误消息:
错误 1 错误 LNK2005:“公共:__thiscall std::list
::list >(void)" (??0?$list@VCRect@@V?$allocator@VCRect@@@std@@@std@@QAE@XZ) 已在 SomeLowLevelLibrary.lib 中定义
错误消息中引用的低级库不知道我正在构建的项目,它只有核心的低级功能,不处理高级 MFC GUI。
如果我将代码行更改为:
但我不想为了它而破解它。
此外,无论我是在堆栈还是堆上创建变量,我仍然会得到同样的错误。
有没有人对此有任何想法?我在 Vista Enterprise 上使用 Microsoft Visual Studio 2008 SP1。
编辑:上面的链接器错误是针对 std::list<> 构造函数的,我也收到析构函数、_Nextnode 和 clear 函数的错误。
编辑:在项目的其他文件中,std::vector 不会链接,在其他文件中它可能是 std::list。我无法弄清楚为什么有些容器可以工作,而有些则不能。MFC 链接在两个库中都是静态的。在低级库中,我们有 1 个继承自 std::list 的类。
编辑:低级库没有任何从 CRect 继承的类,但它确实使用了 STL。
windows - 在 Windows (GCC) 上增加堆栈大小
有没有办法在使用 GCC 的编译/链接时增加 Windows 应用程序的堆栈大小?