创建和使用简单的.dylib

时间:2010-12-10 02:53:12

标签: c++ dylib dynamic-library

在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错误。

2 个答案:

答案 0 :(得分:2)

您不包含库文件,而是包含标题(.h)

所以写

#include "MyLib.h"

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

答案 1 :(得分: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的原因。