创建和使用简单的 .dylib

问题描述 投票:0回答:2

在 Xcode 中创建和使用 .dylib 的最基本方法是什么?

这是我到目前为止所拥有的:

文件:MyLib.h

#include <string>

namespace MyLib
{
    void SayHello(std::string Name);
}

文件:MyLib.cpp

#include <string>
#include <iostream>

#include "MyLib.h"

void MyLib::SayHello(std::string Name)
{
    std::cout << "Hello, " << Name << "!";
}

我将项目编译为动态库,但如何将其与其他项目一起使用? 我尝试过这样的事情:

文件:MyLibTester.cpp

#include "libMyLib.dylib"

int main()
{
    MyLib::SayHello("world");
    return 0;
}

但这给了我超过 400 个错误(大部分是沿着

Stray \123 in program
的方向。使用
<libMyLib.dylib>
给了我一个
file not found
错误。

c++ dylib dynamic-library
2个回答
2
投票

您不包含库文件,但包含标头 (.h)

所以写

#include "MyLib.h"

然后,您必须告诉程序的编译器链接到 dylib 文件。如果您使用的是 Xcode,您只需将 dylib 文件拖到您的项目中即可。


0
投票

FWIW 我的生产编译器使用这个:

/usr/bin/g++ -c -fno-common -fPIC   -Wall \
-Wno-invalid-offsetof -Wfatal-errors -fPIC \
-O3 -fomit-frame-pointer --inline  -DTARGET_BUILD \
-I/usr/local/lib/felix/felix-1.1.6rc1/lib/rtl \
-I/usr/local/lib/felix/felix-1.1.6rc1/config/target \
./hello.cpp -o ./hello.os

/usr/bin/g++ -fno-common -dynamiclib   -O3 \
-fomit-frame-pointer --inline   \
./hello.os -o ./hello.dylib \
-L/usr/local/lib/felix/felix-1.1.6rc1/lib/rtl \
-lflx_dynamic -lflx_gc_dynamic -lflx_judy_dynamic -lflx_exceptions_dynamic

要从 hello.cpp 生成 hello.dylib,您可以删除非必要的位,这些位之所以存在,是因为这就是我的系统中的内容,如果您以后想做一些更高级的事情,可能会有所帮助。编译中的-fPIC是强制的。 -dynamiclib 是 dylib 的组成部分。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.