我正在尝试在 Mac 上构建 libdecodeqr。我的 C++ 构建和链接历史都在 Windows 上,所以这是一个令人兴奋的发现之旅。
我终于到了要创建链接库的地步。我正在运行的命令是:
g++ -shared -o libdecodeqr.so.0.9.3 bitstream.o codedata.o container.o ecidecoder.o formatinfo.o galois.o imagereader.o libdecodeqr.o -L/opt/local/lib -arch i386 -lcxcore -lcv
结果是:
Undefined symbols:
"_main", referenced from:
start in crt1.10.5.o
我的印象是,使用 -shared 标志创建库意味着我不需要 main 函数。源代码中肯定没有。
只是为了好玩,我将 int main() {return 0;} 添加到其中一个 cpp 文件并重建。整个编译和链接,但是当我尝试将输出用作库时,我收到错误消息,告诉我无法链接到主可执行文件。我想这是有道理的。
还有什么我需要传递给 g++ 来告诉它构建一个库吗?
最佳答案
OSX 不支持
-shared
。使用 -dynamiclib
或 -bundle
(取决于您要创建的共享库类型)。
关于c++ - 尝试构建共享库 g++/mac 时 undefined symbol _main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1494407/