我一直在研究 C++ 中的跨平台库。我一直在 Windows (MinGW/msys) 和 Ubuntu (g++) 中编译,它编译时没有任何错误。
我刚刚拿到了一台装有 Kubuntu 的电脑。当我尝试在那里编译它时,我收到一些错误,说我对某些变量有多个定义。这些变量extern
在头文件中定义,并在一行的一个 cpp 中定义。
./libAoTK.a(aotk_unix.o):/home/rickard/c++/AoTK/src/aotk_unix.cpp:16: multiple definition of `AoTK::disp'
./libAoTK.a(aotk_unix.o):/home/rickard/c++/AoTK/src/aotk_unix.cpp:12: first defined here
aotk_unix.cpp中的代码只有一个 的定义disp
,在第 12 行和第 16 行没有对 . 的引用disp
。
我不明白为什么它无法链接,而完全相同的代码在另一台 *nix 机器上编译得很好。