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 到项目的主要内容,如果未能解决你的问题,请参考以下文章

找不到-l 在Code :: Blocks Ubuntu中

代码块调试器因程序参数而失败

Code::Blocks 中的头文件和源文件问题

Code::Blocks + GDAL

在linux中的代码块中复制/粘贴功能

随笔 安装Code::Blocks遇到的问题