1

プログラムを Windows から Mac に移植しているときに、xcode で C/C++ ライブラリを構築しています。ライブラリは sqlite3 c api を使用します。以前の Windows では、sqlite3 ソース コードがライブラリの一部としてコンパイルされていました。

32 ビットと 64 ビットの両方のプラットフォームと互換性があるようにライブラリをコンパイルする必要があり、10.8 までの mac osx 10.5 以降をサポートする必要があります。

Mac には sqlite3 が組み込まれているようです。そのため、プロジェクトで sqlite3 コードをコンパイルする必要はなく、プラットフォームに既にあるライブラリを参照する必要はないと思います。

ライブラリはコンパイルされますが、sqlite3 関数呼び出しのリンク エラーが発生します。

動的ライブラリである sqlite3.dylib を mac で見つけることができました。

Windows では、loadlibrary() 関数呼び出しを使用して dll を使用します。それで、私を混乱させるのは、コードを変更して、Mac の loadlibrary() と同様の呼び出しを行い、それを使用する必要があるかどうかです。よくわかりません.. Macは初めてです。

Mac で sqlite3 の静的ライブラリを期待していましたが、見つかったのは dylib です。sqlite3 を静的にリンクできれば、コードの多くを変更する必要がないため、おそらく最適でしょう。

xcode プロジェクトでプラットフォームで利用可能な sqlite3 ライブラリにリンクするにはどうすればよいですか? または、プロジェクトの一部として sqlite3 コードをコンパイルし、プラットフォーム上の dylib を無視する必要がありますか?

何か助けてください?

4

1 に答える 1

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 構文を使用できます

于 2013-02-02T21:50:18.493 に答える