gpt4 book ai didi

c++ - Zenlib 错误 : undefined reference to Open function call which uses typedef

转载 作者:行者123 更新时间:2023-11-28 06:28:30 25 4
gpt4 key购买 nike

我正在尝试编译一个使用 Zenlib 的程序

看下面代码

#include <iostream>
#include <string>
#include <sstream>
#include <ZenLib/Ztring.h>
#include <ZenLib/File.h>

using namespace std;


int main () {
ZenLib::File From;
ZenLib::tstring tstr("/path/to/file");
From.Open(tstr);
}

libzen.so 在/usr/lib/x86_64-linux-gnu/中

编译命令

g++ -g tst1.cpp -o a.out -lpthread -lzen

我遇到了错误

/tmp/cck5s6iO.o: In function `main':
/tmp/tst1.cpp:13: undefined reference to `ZenLib::File::Open(std::string const&, ZenLib::File::access_t)'
collect2: error: ld returned 1 exit status

打开声明如下

bool Open  (const tstring &File_Name, access_t Access=Access_Read);

Ztring.h 中的 tstring 类型定义如下

typedef std::basic_string<Char, std::char_traits<Char>, std::allocator<Char> > tstring;

最佳答案

发生这种情况是因为您使用的 ZenLib 被编译为 UNICODE。

尝试下面的代码,它会起作用:

#include <iostream>
#include <string>
#include <sstream>

#define UNICODE // must define this before including ZenLib's headers
#include <ZenLib/Ztring.h>
#include <ZenLib/File.h>

using namespace std;


int main () {
ZenLib::File From;
ZenLib::tstring tstr(L"/path/to/file"); // use unicode string literal
From.Open(tstr);
}

关于c++ - Zenlib 错误 : undefined reference to Open function call which uses typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com