sqlite3在mac osx上链接错误

时间:2013-02-02 18:58:39

标签: xcode sqlite

在将程序从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?

请帮忙吗?

1 个答案:

答案 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语法