我正在尝试编译一个使用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);
tstring typedefed在Ztring.h中,如下所示
typedef std::basic_string<Char, std::char_traits<Char>, std::allocator<Char> > tstring;
答案 0 :(得分:1)
这是因为您使用的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);
}