这是我得到的错误
Undefined symbols:
"Config::fmap", referenced from:
register_function(unsigned int (*)(unsigned int))in Config.o
print_config() in shared.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
配置.h
#include <map>
#include <boost/preprocessor/stringize.hpp>
typedef unsigned int (*fptr_t)(unsigned int);
typedef std::map<fptr_t, std::string> function_name_map_type;
void register_hash_names();
void register_function(fptr_t funct_pointer);
class Config
{
public:
static function_name_map_type fmap;
};
配置.cpp
function_map_t fmap;
void register_hash_names()
{
register_function(sha1);
...
}
void register_function(fptr_t funct_pointer)
{
(Config::fmap)[funct_pointer] = BOOST_PP_STRINGIZE(funct_pointer);
}
错误来源Shared.cpp:
std::cout << "\t " << Config::fmap[Config::current_hash_function] << "\n";
最佳答案
.cpp 中的定义应该是:
function_map_t Config::fmap;
关于C++:在类中使用带有静态变量的 map 时遇到问题,我得到 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966434/