Code :: Blocks v12.11包含.lib到项目

时间:2014-08-03 10:49:01

标签: c++ codeblocks

如何在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'未在此范围内声明

1 个答案:

答案 0 :(得分:1)

这是编译错误,而不是链接错误,所以问题与库无关。您需要声明函数的可见性,通常通过包含标题来完成。

如果你想要的SFileOpenArchive是StormLib中的那个(这将是包含在问题中的有用信息),那么documentation清楚地表明标题是StormLib.h,所以你需要添加

#include "StormLib.h"

到您的计划。

编辑:如果之后您有链接问题,请参阅How do I link to a library with Code::Blocks?