在将程序从windows移植到mac时,我正在xcode中构建一个C / C ++库。 该库使用sqlite3 c api。以前在Windows中,sqlite3源代码是作为库的一部分编译的。
我必须编译我的库以兼容32位和64位平台,并且需要支持mac osx 10.5直到10.8
在mac上似乎内置了sqlite3,所以我想我不需要在项目中编译sqlite3代码而是引用已经在平台上的库
库编译但为sqlite3函数调用提供了链接错误,
我能在mac上找到sqlite3.dylib,这是一个动态库。
在windows中我们使用loadlibrary()函数调用来使用dll。令我困惑的是,我是否必须更改我的代码,以便为mac调用类似于loadlibrary()的调用,然后使用它?我不确定..我是mac的新手。
我期待在mac上使用sqlite3的静态库,我找到的是dylib,如果我可以静态链接sqlite3,它可能是最好的,因为我不需要更改大量的代码。
如何在我的xcode项目中将其链接到平台可用的sqlite3库?或者我是否需要在项目中编译sqlite3代码并忽略平台上的dylib?
请帮忙吗?
答案 0 :(得分:0)
#ifndef WIN32
typedef void* HANDLE
inline HANDLE LoadLibrary(char path[])
{
return (HANDLE) dlopen(path, RTLD_NOW);
}
inline void FreeLibrary(HANDLE handle)
{
dlclose((void*) handle);
}
#endif
//将上述函数放在标题中,然后您可以继续使用LoadLibrary语法