C言語でハッシュテーブルを利用する方法

APR(Apache Portable Runtime)

ライブラリ(APR)を生成する方法を説明します。
対象のOSはWindows(11)です。

CMakeを使用したビルド方法は、APRのソースフォルダ内(後述)の以下ファイルに記載されています。
 apr-1.7.0-win32-src\apr-1.7.0\README.cmake
後述の方法は、README.cmakeに記載の方法を詳細に説明したものです。

ファイル(ソース)・フォルダの準備

APRのソースファイルをビルドすることで、ライブラリを生成します。以下のフォルダを用意します。

  • ソースファイルのフォルダ①
  • ビルドにより生成されたライブラリ等を格納するフォルダ②

私は上記①と②のパス(配置先)は全角文字(日本語)が含まれない様にしました。全角文字がパスに含まれる場合、正しくビルドが出来なかったためです。

以下にパスの一例を示します。

  • C:\lib\apr-1.7.0-win32-src ③
  • C:\lib\apr_bin ④

ソースファイルのフォルダ①の準備

ソース(zip)をダウンロードし、任意のフォルダ(前述の③等)に展開する。
Download – The Apache Portable Runtime Project

ビルドにより生成されたライブラリ等を格納するフォルダ②の準備

任意のパスにフォルダを生成します(前述の④等)。

上記は、ソースファイルと生成されたライブラリを格納するフォルダを分けて、ライブラリを捜し易くするために行います。

CMakeのインストール

CMake(version 2.8以上)をダウンロード・インストールします。私は、以下のversion 3.25をインストールしました。

Download | CMake

ビルド

cmakeとnmakeによりAPRをビルドします。

nmakeは、Visual Studio Toolsのコマンドプロンプト「Developer Command Prompt for VS 2022」から利用することができます。Visual Studio 2022をインストールしている場合、以下のフォルダにコマンドプロンプトはあります。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools

コマンドプロンプトを起動し、以下コマンドを入力します。

  • cd C:\lib\apr-1.7.0-win32-src\apr-1.7.0
  • cmake -G “NMake Makefiles” -DCMAKE_INSTALL_PREFIX=C:\lib\apr_bin C:\lib\apr-1.7.0-win32-src\apr-1.7.0

 ※C:\lib\apr_binは、ライブラリのインストール先を表しています。
 ※C:\lib\apr-1.7.0-win32-src\apr-1.7.0は、ソースファイルのパスを表しています。

上記コマンドにより、以下が生成されます。
 C:\lib\apr-1.7.0-win32-src\apr-1.7.0\Makefile

続けて、以下コマンドを入力します。

  • namake install

以下の様に、ライブラリの格納フォルダにライブラリが生成されます。※一部省略しています。

正常にビルドが完了した場合、ライブラリ格納フォルダは、以下の様になります。

APRをVisual Studioで利用するためのTIP

DLL利用のための環境変数設定

ライブラリ格納フォルダ(例 C:\lib\apr_bin\bin)を環境変数(Path)に設定する。

Visual Studioでビルドした際に以下エラーが出る時は、Visual Studioを再起動してください。再起動しないと、環境変数が反映されません。

「dllが見つからないため コードの実行を続行できません」

「error LNK2019: 未解決の外部シンボル __imp_apr_initializeが関数 mainで参照されました」の対応

APRは32bitのライブラリである(*1)ため、Visual Studioの設定を32bit向け(x86)に変更する必要があります。

error LNK2019の原因は、以下であると考えられます。

64 ビットのライブラリを 32 ビットのコードに、または 32 ビットのライブラリを 64 ビットのコードにリンクしようとすると

コードにリンクされているライブラリとオブジェクト ファイルは、コードと同じアーキテクチャ用にコンパイルする必要があります。 プロジェクトが参照するライブラリが、プロジェクトと同じアーキテクチャ用にコンパイルされている必要があります。 [ライブラリ ディレクトリ] /LIBPATH プロパティまたは [追加ライブラリ ディレクトリ] プロパティが、正しいアーキテクチャ用に構築されたライブラリを指していることを確認します。

リンカ ツール エラー LNK2019 | Microsoft Learn

(*1)ソースファイル名称(apr-1.7.0-win32-src.zip)にwin32の文字列が含まれているため。

コメント

タイトルとURLをコピーしました