さて、私の問題を詳細に説明しようとします。アーカイブからゲーム リソースを読み取るために、SFML 用の ziploading API の使用を開始しました。必要なすべてのヘッダーとソース ファイルをプロジェクトの Codeblocks に配置したので、プロジェクトは次の要素で構成されます。
Source files for game
ZipLoader.h
ZipLoader.cpp
ioapi.h
unzip.h
zconf.h
zlib.h
したがって、アーカイブ内のリソースに基づいてゲーム メニューを描画しようとするゲーム メニュー ヘッダーには、次のようなものがあります。
#include <SFML/Graphics.hpp>
#include "Globals.h"
#include "ZipLoader.h"
class GameMenu
{
private:
Zip::File file();
}
これは基本的に、メニューを宣言したgameMenu.cppでzipファイルをロードできるように、zipファイルを初期化しようとした場所です。ただし、次のような非常に奇妙なエラーが ZipLoader.cpp に表示されます。
src\ZipLoader.cpp|81|undefined reference to `unzOpen'|
src\ZipLoader.cpp|89|undefined reference to `unzLocateFile'|
src\ZipLoader.cpp|94|undefined reference to `unzOpenCurrentFile'|
src\ZipLoader.cpp|100|undefined reference to `unzGetCurrentFileInfo'|
src\ZipLoader.cpp|105|undefined reference to `unzReadCurrentFile'|
src\ZipLoader.cpp|109|undefined reference to `unzCloseCurrentFile'|
src\ZipLoader.cpp|110|undefined reference to `unzClose'|
しかし、それは不可能だと思います。ライブラリが見つからないと思いましたが、エラーが発生しているファイルにインポートしています。上記のすべてのメソッドは、unzip.h
エラーが発生しているファイルにインポートされています。
#include "ZipLoader.h"
#include <SFML/System.hpp>
#include <iostream>
#include <fstream>
#include "unzip.h"
...
unzFile ZipHandle=unzOpen(DataFile); // error????
以下に示すように、unzip.h にはこれらの参照が非常によく存在します。
extern unzFile ZEXPORT unzOpen OF((const char *path));
extern unzFile ZEXPORT unzOpen2 OF((const char *path,
zlib_filefunc_def* pzlib_filefunc_def));
extern int ZEXPORT unzClose OF((unzFile file));
これは、C++ プログラムでこれまでに発生した中で最も奇妙なエラーです。ここにあるのに、どうして未定義になるのでしょうか? (私は Windows XP SP3 を使用しています)