【发布时间】:2020-02-20 17:10:06
【问题描述】:
我对@987654324@ 和Windows 都使用相同的waf 脚本来为程序(能够在运行时加载共享库)编译shared-library。
为了创建这个库,我导入了一些主程序的头文件,这样我就可以在库中调用主程序的函数,并且在运行时解析符号,这在 Linux 下有效。
在 Windows 下,我无法构建库,因为它对我在库中调用的主程序的每个函数都显示 undefined reference。
在这种情况下Windows 和Linux 有什么区别?为什么我必须在Windows 下的链接时解析符号?有没有标志或类似的东西可以避免这种情况?
【问题讨论】:
-
一个更好的问题是为什么你不必在 Linux 上这样做......链接器应该让你使用未定义的符号而不关心是没有意义的。
-
您要创建静态库还是动态库?我不明白你的模块结构,你想根据你程序的功能创建一个库吗?我想您的程序是一个“.exe”,您打算如何将它们与程序的功能(.exe)联系起来?通常,它是加载库的“.exe”,而后者又可以加载其他库……而据我了解,在这里,您想构建一个具有“.EXE”功能的库
-
我问了另一个问题,我在其中简化了问题并展示了一个最小的可重现示例 (stackoverflow.com/questions/60380196/…)
标签: c gcc shared-libraries undefined-reference