c++ - 尝试构建共享库 g++/mac 时 undefined symbol _main

标签 c++ macos g++ linker

我正在尝试在 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/

相关文章:

c++ - g++: 未在此范围内声明

c++ - STL std::map operator[] 在赋值的右侧

C++ - "Incomplete type not allowed"错误是什么意思,我该如何解决?

Java OSX MessageDigest.getInstance ("MD5") 挂起

ios - 解析 : Xcode 6. 3.1 在 OS X El Capitan 上运行错误 "cannot load module parse as parse"

c++ - 编辑和编译源代码,而无需将拷贝存储在磁盘存储器中

c++ - 如何在函数中初始化 CString& 参数

c++ - c_str() == NULL 不工作

macos - 在沙盒应用中访问桌面

c++ - 析构函数调用了不合适的库