我正在使用glomosim模拟器进行网络练习。 网络层下的路由协议文件之一有以下行。文件名为" ARAN.pc " (我从互联网上获取此文件,我想替换默认情况下使用真正的路由协议即ARAN在模拟器中设置的aodv协议):
extern int maliciousNodesPercentage; //defined and set in driver.pc
当我编译模拟器(使用bat文件)时显示我的错误:
*call pcc -user_main -Zi -Ox -I..\include\ -clock longlong -o ..\bin\glomosim driver.pc temp.lib
tmp-3572-0.c
driver.init.c
temp.lib(aran.obj) : error LNK2001: unresolved external symbol _maliciousNodesPercentage
..\bin\glomosim.exe : fatal error LNK1120: 1 unresolved externals*
当我打开driver.pc
文件时,我找不到 maliciousNodesPercentage 。
如何设置变量的值?
答案 0 :(得分:1)
必须声明外部变量somewhere
。如果您只使用extern int maliciousNodesPercentage
,它会告诉编译器此变量是在其他模块中定义的,因此不会为其分配任何存储空间。在链接阶段,链接器将放入变量的实际地址。由于您没有在任何地方定义它,因此您将得到一个未解析的符号。
例如,在main
中,您将其定义为全局变量:
int maliciousNodesPercentage;
并在所有其他模块(或头文件)中执行:
extern int maliciousNodesPercentage;
然后你可以像任何其他全局变量一样访问它。