Создание и использование простого .dylib - PullRequest
2 голосов
/ 10 декабря 2010

Какой самый простой способ создания и использования .dylib в Xcode?

Вот что у меня есть:

Файл: 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 ]

2 голосов
/ 13 декабря 2010

Вы включаете не файл библиотеки, а заголовок (.h)

Так напишите

#include "MyLib.h"

Затем вы должны указать компилятору, чтобы ваша программа связывалась с файлом dylib. Если вы используете Xcode, вы можете просто перетащить файл dylib в ваш проект.

0 голосов
/ 10 декабря 2010

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.dylib из hello.cpp, вы можете убрать ненужные биты, которые есть там только потому, что это то, что тамв моей системе и может помочь, если вы хотите сделать немного более продвинутые вещи позже.-FPIC в компиляции является обязательным.-Dynamiclib - это то, что делает dylib.

...