gpt4 book ai didi

c++ - GNE 的几个错误

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

虽然我是 C++ 的新手,(我有 Java 经验)我正在开始一个需要使用 GNE 的项目。 ,或游戏网络引擎。

在他们的 tutorial ,(自 2003 年起授予)他们使用此行:

if ( initGNE( NL_IP, atexit ) ) {

在我的代码中,我使用以下内容:

log("Initializing GNE...");

if(initGNE(NL_IP, atexit)) {
err("GNE failed to initialize!");
err("Press ENTER to close MoServ...");
std::cin.get();
exit(0);
}

log("-> Registering game version...");
setGameInformation(myName(), myVer());
log("-> Initializing console...");
initConsole(false);
setTitle("MoServ");

log("GNE initialized!");

编译时(在 Linux 上使用 g++,通过 eclipse/w CDT)我得到以下错误:

/home/tehtros/Dev/MoServ/Debug/../src/main.cpp:38: undefined reference to `GNE::initGNE(unsigned int, int (*)(void (*)()), int)'
/home/tehtros/Dev/MoServ/Debug/../src/main.cpp:46: undefined reference to `GNE::setGameInformation(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)'
/home/tehtros/Dev/MoServ/Debug/../src/main.cpp:48: undefined reference to `GNE::Console::initConsole(bool)'
/home/tehtros/Dev/MoServ/Debug/../src/main.cpp:49: undefined reference to `GNE::Console::setTitle(char const*)'

注意:在文档中,他们确实说过,除非您首先调用 GNE::initGNE(),否则所有其他 GNE 函数都会出现“ undefined reference ”错误。


如果我改变:

if(initGNE(NL_IP, atexit)) {

到:

if(initGNE(NL_IP, atexit())) {

然后我得到错误:

../src/main.cpp:38:27: error: too few arguments to function ‘int atexit(void (*)())’

虽然这在文档中无处可寻,但如果我更改它:

if(initGNE(NL_IP, atexit())) {

更进一步,到此:

if(initGNE(NL_IP, atexit(shutdownGNE()))) {

然后我得到这个错误:

../src/main.cpp:38:40: error: invalid use of void expression

如果我去掉括号,像这样:

if(initGNE(NL_IP, atexit(shutdownGNE))) {

然后我得到这个错误:

../src/main.cpp:38:39: error: invalid conversion from ‘int’ to ‘int (*)(void (*)())’ [-fpermissive]
/usr/local/include/gnelib/ObjectBrokerClient.h:120:15: error: initializing argument 2 of ‘bool GNE::initGNE(NLenum, int (*)(void (*)()), int)’ [-fpermissive]

如您所见,我有点迷路了。我不知道 GNE 是否坏了,如果我只是犯了一个小错误,或者如果我完全不知道我在做什么,我应该停止尝试用我的一点理解来编写这么大的东西。 (话又说回来,我是通过实际做来学习的,而不是通过阅读如何去做。)任何人都可以提供任何帮助或支持,并澄清我做错了什么吗?


编辑:我直接从他们的网站上复制并粘贴了他们的示例,没有任何修改,但没有编译。


解决方案:我通过更改命令的顺序解决了这个问题。在命令行上,我能够像这样编译:

g++ -o test "test.cpp" -lgnelib -lNL

为了使它与 eclipse 一起工作,我添加了 gnelibNL 作为库,并将构建命令更改为:

${COMMAND} ${INPUTS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${FLAGS}

最佳答案

我不确定你为什么要使用函数点参数 atexit 但显然如果 initGNE() 需要一个指向函数传递的指针,它就不会工作相反,有些不同。特别是,它不会传递调用 atexitvoid 结果。

第一个示例中的错误仅仅是由于编译程序而不是链接到适当的库造成的:您需要指定定义函数的库。看看,例如 installation tutorial这表明您需要使用 -lgnelib

关于c++ - GNE 的几个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433842/

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