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 に答える