用c++为OSX创建共享库

Creating shared libraries in C++ for OSX

本文关键字:共享 创建 OSX c++      更新时间:2023-10-16

我刚开始用c++编程,我意识到我不得不一遍又一遍地写同样的代码(主要是实用程序函数)。

所以,我试图创建一个共享库并将其安装在PATH中,以便我可以在需要时使用实用程序函数。

到目前为止我所做的是:-

创建一个包含以下内容的文件utils.h:—

#include<iostream>
#include<string>
std::string to_binary(int x);

创建一个包含以下内容的文件utils.cpp:-

#include "utils.h"
std::string to_binary(int x) {
  std::string binary = "";
  while ( x > 0 ) {
    if ( x & 1 ) binary += "1";
    else binary += "0";
    x >>= 1;
  }
  return binary;
}

遵循下面提到的步骤:-http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/

  • 创建库对象代码:g++ -Wall -fPIC -c utils.cpp

但是由于上面的链接是针对Linux的,它在OSX上并不真正工作。有人可以建议阅读资源或提示我如何在OSX机器的路径中编译和设置这些对象吗?

而且,我猜应该有一种方法我可以使这个跨平台(即。编写一组指令(bash脚本)或Makefile),以便我可以使用它轻松地跨平台编译。有什么提示吗?

使用-dynamiclib选项在OS X上编译动态库:

g++ -dynamiclib -o libutils.dylib utils.cpp

然后在您的客户端应用程序中使用它:

g++ client.cpp -L/dir/ -lutils

你发布的链接是使用C和C编译器。因为你正在构建c++:

g++ -shared -o libYourLibraryName.so utils.o