【问题标题】:Defining main in shared library on OSX在 OSX 上的共享库中定义 main
【发布时间】:2024-01-21 02:57:02
【问题描述】:

我正在使用 xcode 用 c/c++ 编写一个 OSX 应用程序。

我正在将一个共享库 (somelib.dylib) 链接到应用程序,我希望主函数驻留在共享库中,而不是主可执行文件中。

这可能吗?

当我尝试时,程序在启动代码中崩溃。

共享库确实定义了一个主函数。

另外,有没有办法强制 xcode 在构建项目时显示它发出的命令?

【问题讨论】:

  • 什么是 C/C++? C 与 C++ 相交? C 联合 C++ ?
  • 我正在用 c 编写应用程序的某些部分,用 c++ 编写其他部分

标签: c++ c macos shared-libraries main


【解决方案1】:

共享库无法按照您希望的方式工作。 Main 必须驻留在实际程序中。也就是说,没有什么可以阻止您简单地调用库中运行其余程序逻辑的函数。

//... includes

int main(int argc, char **argv){
  return Library::Run();
}

【讨论】:

  • 谢谢你,马克斯。但是,我必须与您所说的相矛盾:在为 linux 构建应用程序时,主要功能确实可以在我链接到可执行文件的共享库中。我知道这是真的,因为我已经做到了,但它似乎不适用于 OSX。同样感谢您的帮助。
最近更新 更多