我的make文件:
all: hPif clean
hPif : src/main.o src/fann_utils.o src/hashes.o src/Config.o
g++ src/Config.o src/main.o src/fann_utils.o src/hashes.o -lfann -L/usr/local/lib -o hPif
Config.o : src/Config.cpp src/Config.h
g++ -c src/Config.cpp
hashes.o : src/hashes.cpp src/hashes.h
g++ -c src/hashes.cpp
fann_utils.o: src/fann_utils.cpp fann_utils.h src/Config.h src/hashes.h
g++ -c src/fann_utils.cpp
main.o: src/main.cpp src/Config.h src/main.h src/hashes.h
g++ -c src/main.cpp
clean:
rm -rf src/*o
rm -rf *o
我得到的错误,在make:
g++ src/Config.o src/main.o src/fann_utils.o src/hashes.o -lfann -L/usr/local/lib -o hPif
Undefined symbols:
"Config::NO_FILE_TRAIN", referenced from:
_main in main.o
_main in main.o
"Config::LEARNING_RATE", referenced from:
display_help() in main.o
train_network_no_file() in main.o
train_network() in main.o
_main in main.o
.
.
.
此处代码布局的详细信息:C++: I have this config class that I want to use between all my CPP files, how do I initialize it?
编辑:
此处存在问题的代码:http://pastebin.com/PDmHaDaC
答案 0 :(得分:2)
我引用您accepted answer中的the other question,其中静态变量已正确定义:
来源(Config.cpp):
#include "Config.h"
int Config::OUTPUT_TO_FILE = 0;
int Config::NEED_TO_TRAIN = 0;
int Config::NO_FILE_TRAIN = 0;
int Config::NEED_TO_TEST = 0;
请注意Config::
对变量的限定。
将其与您的粘贴bin页面进行比较:http://pastebin.com/PDmHaDaC
答案 1 :(得分:0)
您刚刚从其他问题中学习了如何处理这些静态成员变量的理论。而不是立即尝试将它们挂钩到一个大的代码库中,尝试让它们在一个小的代码库中工作;写一个使用它们的helloWorld
,只需定义这些变量的main.cpp
,修改它们并打印出来。一旦工作正常,您可以将定义移到Config.cpp
,一旦 工作,您就可以将这些变量集成到您的项目中。
修改:
这是麻烦:
int NO_FILE_TRAIN = false;
应该是
int Config::NO_FILE_TRAIN = false;