Създаване и използване на прост .dylib

Какъв е най-основният начин за създаване и използване на .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.


person Maxpm    schedule 10.12.2010    source източник


Отговори (2)


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

Така че пишете

#include "MyLib.h"

След това трябва да кажете на компилатора вашата програма да се свърже с файла dylib. Ако използвате Xcode, можете просто да плъзнете файла dylib във вашия проект.

person lucas clemente    schedule 12.12.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.

person Yttrill    schedule 10.12.2010