在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
错误。
答案 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的原因。