【发布时间】:2010-06-17 20:20:25
【问题描述】:
在我正在处理的一个 c++ 项目中,我有一个简单的 c++ 文件,它需要在程序执行开始时运行一些代码。这个文件被链接到一个静态库中,然后被链接到主程序中。
我在其他文件中有类似的代码运行良好,看起来像:
bool ____nonexistent_value = executeAction();
但是,除非我使用此文件中实现的功能,否则它在此文件中不起作用。如果库被编译为共享库,它确实有效。我更喜欢静态链接它,因为库只是一种方便,因为文件位于不同的目录中。
更新(解决方案):
现在创建共享库而不是静态库可以使一切正常。稍后我将研究如何让所有东西都与静态库链接。感谢大家的帮助!
【问题讨论】:
-
与这个问题无关,这里已经讨论过很多次了,并且没有可移植的解决方案,但是像
____nonexistant_value这样的名称在用户编写的C++代码中是非法的。跨度> -
'它不起作用'因为它编译但在运行时没有值?还是由于缺少定义而无法编译?
-
感谢所有回复!我在下面找到了我的问题的答案,但我感谢所有帮助!我不知道以下划线开头的名字是非法的,我只是认为他们不鼓励。抱歉含糊其辞。程序运行时,不会调用该函数。我已经通过使用一个非常简单的测试(仅输出的单行函数)进行了确认。谢谢大家的时间!
标签: c++ linker static-linking