如何在Some.lib
12.11版本中将Code::Blocks
文件添加到我的项目中?
我试图找到链接器选项(项目,构建选项只有Post / Prebuild步骤,自定义变量," Make"命令)。 #pragma comment(lib,xxx.lib
) - 对GCC编译器没用,而我的lib文件中的函数 - SFileOpenFileEx(file, szArchivedFile, 0, &hFile)
向我展示了error: not declared
(即lib无效。)
我如何解决这个问题?
来源是:
#include "resourcemanager.h"
#include "filestream.h"
#include <physfs.h>
#include <archivelib> //mylib
ResourceManager g_resources;
void ResourceManager::init(const char *argv0)
{
PHYSFS_init(argv0);
PHYSFS_permitSymbolicLinks(1);
}
void ResourceManager::terminate()
{
PHYSFS_deinit();
}
//test function for library
bool ResourceManager::openArchive(const std::string& szArchiveName, const std::string& szArchivedFile, const std::string& szFileName)
{
HANDLE hDat = NULL; // Open archive handle
HANDLE hFile = NULL; // Archived file handle
HANDLE handle = NULL; // Disk file handle
int nError = ERROR_SUCCESS; // Result value
//openArchive
if(nError == ERROR_SUCCESS)
{
if(!SFileOpenArchive(szArchiveName, 0, 0, &hDat))
nError = GetLastError();
}
if(nError == ERROR_SUCCESS)
{
if(!SFileOpenFileEx(hDat, szArchivedFile, 0, &hFile))
nError = GetLastError();
}
//file opens, return true. just test.
return true;
}
错误是Line:340 |错误:'SFileOpenArchive'未在此范围内声明
答案 0 :(得分:1)
这是编译错误,而不是链接错误,所以问题与库无关。您需要声明函数的可见性,通常通过包含标题来完成。
如果你想要的SFileOpenArchive
是StormLib中的那个(这将是包含在问题中的有用信息),那么documentation清楚地表明标题是StormLib.h,所以你需要添加
#include "StormLib.h"
到您的计划。
编辑:如果之后您有链接问题,请参阅How do I link to a library with Code::Blocks?。