我正在尝试在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标志创建一个库意味着我不需要主函数。源代码中肯定没有。
只是为了踢,我将int(){return 0;}添加到其中一个cpp文件并重建。整个事情编译和链接,但当我尝试将输出用作库时,我得到错误告诉我,我无法链接到主可执行文件。我猜这是有道理的。
我需要传递给g ++以告诉它构建库吗?
答案 0 :(得分:7)
-shared
。使用-dynamiclib
或-bundle
(取决于您要创建的共享库类型)。