Code::Blocks v12.11 包含 .lib 到项目
Posted
技术标签:
【中文标题】Code::Blocks v12.11 包含 .lib 到项目【英文标题】:Code::Blocks v12.11 include .lib to project 【发布时间】:2014-08-03 10:49:00 【问题描述】:如何在Code::Blocks
12.11 版本中将Some.lib
文件添加到我的项目中?
我试图找到链接器选项(项目、构建选项只有 Post/Prebuild 步骤、自定义变量、“制作”命令)。 #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|error: ‘SFileOpenArchive’ 没有在这个范围内声明
【问题讨论】:
“未声明”表明您缺少包含而不是库。确切的错误信息是什么?代码是什么样子的? 已添加。 SFileOpenArchive 和 SFileOpenFileEx 是库函数,但我不知道如何使它们在 Code::Blocks 中工作。在 MSVS 中,解决方案是“pragma comment”,但在这个原因我不知道如何实现这个 【参考方案1】:那是编译错误,不是链接错误,所以问题与库无关。您需要使函数的声明可见,这通常通过包含标题来完成。
如果您想要的 SFileOpenArchive
是 StormLib 中的那个(这将是问题中包含的有用信息),那么 documentation 明确指出标头是 StormLib.h,因此您需要添加
#include "StormLib.h"
到你的程序。
编辑:如果之后您遇到链接问题,请参阅How do I link to a library with Code::Blocks?。
【讨论】:
谢谢,我检查一下。但是关于在 Code::Blocks 中链接库的主题已经过时了。我已经通过设置--->编译器--->链接器设置--->添加库来添加它。这实际上适用于 12.11ver以上是关于Code::Blocks v12.11 包含 .lib 到项目的主要内容,如果未能解决你的问题,请参考以下文章