在我正在研究的c ++项目中,我有一个简单的c ++文件,需要在程序执行开始时运行一些代码。该文件链接到一个静态库,然后链接到主程序。
我在其他运行正常的文件中有类似的代码,看起来像是:
bool ____nonexistent_value = executeAction();
但是,除非我使用此文件中实现的功能,否则它在此文件中不起作用。如果将库编译为共享库,它确实有效。我宁愿静态链接这个,因为库只是方便,因为文件在不同的目录中。
现在创建共享而不是静态库使一切正常。稍后我将研究如何将所有内容与静态库链接起来。谢谢大家的帮助!
答案 0 :(得分:2)
如果该特定文件中未引用任何符号,则链接器将不包含该文件。您有两种选择:
答案 1 :(得分:1)
我不确定是否有办法在静态库中保证这样的静态分配,但您总是可以将其显式化。为您的库提供init函数,该函数将从main调用以设置您需要的所有内容。这样您就不必担心链接器会忽略显然未使用的代码等等。
答案 2 :(得分:0)
静态初始化没有保证顺序。你想要非常小心!