- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然我是 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 一起工作,我添加了 gnelib
和 NL
作为库,并将构建命令更改为:
${COMMAND} ${INPUTS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${FLAGS}
最佳答案
我不确定你为什么要使用函数点参数 atexit
但显然如果 initGNE()
需要一个指向函数传递的指针,它就不会工作相反,有些不同。特别是,它不会传递调用 atexit
的 void
结果。
第一个示例中的错误仅仅是由于编译程序而不是链接到适当的库造成的:您需要指定定义函数的库。看看,例如 installation tutorial这表明您需要使用 -lgnelib
。
关于c++ - GNE 的几个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433842/
虽然我是 C++ 的新手,(我有 Java 经验)我正在开始一个需要使用 GNE 的项目。 ,或游戏网络引擎。 在他们的 tutorial ,(自 2003 年起授予)他们使用此行: if ( ini
我是一名优秀的程序员,十分优秀!