3

在 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. Using<libMyLib.dylib>给了我一个file not found错误。

4

2 回答 2

2

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

所以写

#include "MyLib.h"

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

于 2010-12-12T21:16:18.313 回答
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 的组成部分。

于 2010-12-10T03:06:37.900 回答