我想使用变量调用函数.这可能在C?
实际上,我想要做的是,从用户获取函数名称并将其存储在变量中.现在我想调用存储其名称的函数.谁能告诉我如何在C中完成这项工作?
我想为双人游戏开发AI游戏引擎.没有实现赢得游戏逻辑的主要功能的两个程序将被馈送到游戏引擎.让我明确一下,程序名称将与实现赢得游戏逻辑的程序中的主要功能相同.
因此,当用户输入第一个和第二个玩家的名字时,我可以将它们存储在2个不同的变量中.现在,由于函数名称与程序名称相同,我打算用包含prog名称的变量调用函数.
我看过很多类似的帖子,但是在书中尝试了每一个技巧,我仍在苦苦挣扎.一切都工作正常,但在安装/删除wireshark与一些组件/解析器后,它们都搞砸了.我不记得确切地卸载了哪些库/软件包,但可能比我注意到的要多得多.
如果我像这样创建一个简单的main.cpp文件:
#include <SQLAPI.h>
int main()
{
SAConnection con;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并尝试
g ++ main.cpp -lsqlapi -ldl
它给我以下错误消息:
/usr/local/lib/libsqlapi.so: undefined reference to `dlsym'
/usr/local/lib/libsqlapi.so: undefined reference to `dlerror'
/usr/local/lib/libsqlapi.so: undefined reference to `dlopen'
/usr/local/lib/libsqlapi.so: undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我试图在-lsqlapi之前放-ldl,因为有些人认为订单很重要.如果我使用gcc而不是g ++,错误是:
/usr/bin/ld: /tmp/ccwBI4tj.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
如果删除了SAConnection,我可以编译并运行该文件.
我不认为它与SQLAPI有任何关系,因为我遇到了与libboost类似的问题.我没有一个小代码示例,但是当我编译上周成功编译的项目时,我得到错误:
/usr/bin/ld: debug/components/helloworld/HelloWorld.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv' …Run Code Online (Sandbox Code Playgroud)