【发布时间】:2021-04-04 17:24:02
【问题描述】:
我想编写一个共享库,如果我忘记实现某些功能,我想得到一个编译器/链接器错误。
考虑以下情况:
测试.h
class Test {
public:
Test();
};
test.cpp
#include "test.h"
main.cpp
#include "test.h"
int main() {
new Test();
}
如果我使用此命令gcc -c -fpic test.cpp && g++ -shared -o libtest.so -Wl,--no-undefined -Wl,--no-allow-shlib-undefined test.o 创建库,则没有错误消息,但库已损坏。有没有办法强制创建未损坏的库?
编辑:添加额外的标志,但不改变结果
【问题讨论】:
-
那没有帮助。我将不得不编写测试实现,而不是编写函数。
-
如果你有一些单元测试,如果你没有实现它们就会失败。这怎么没有帮助?
-
因为我的目标是在我忘记某些东西时被记住。但是,如果我必须记住编写测试或编写实现,这对我来说并没有什么不同。
-
-Wl,--no-allow-shlib-undefined 有什么不同吗?
-
如果您不测试您的函数,即使您确实记得实现它们,您怎么知道它们没有“损坏”(例如,错误)?
标签: c++ dll shared-libraries