【发布时间】:2020-07-15 11:19:04
【问题描述】:
在我的共享库中,我在头文件中声明了一个函数,并在 .cpp 源文件中定义了它。将应用程序与库链接时,链接器抱怨该函数未定义,我不知道是因为缺少命名空间、不同的参数还是其他原因。
如果我可以将函数定义标记为“实现先前的声明”,我会在编译期间发现这个声明/定义的差异,而不是稍后在我将应用程序与库链接时。
是否有类似于类方法的“override”关键字的东西会阻止我在没有现有匹配声明的情况下定义函数?
我可以使用-Wl,--no-undefined,但是创建了一些库,期望--no-undefined 不会被使用。
【问题讨论】:
-
在源文件中包含头文件是第一个猜测。并确保标题有警卫。不过,一切都只是猜测。没有代码。 minimal reproducible example 和 How to Ask 被大量引用是有原因的。
-
您的单元测试未链接将是一个指标
-
对于 Linux 上的共享库,请阅读 How to write shared libraries。阅读Program Library HowTo 和C++ dlopen minihowto
标签: c++ shared-libraries