【发布时间】:2010-11-09 00:25:25
【问题描述】:
我正在开发一个 (C++) 程序,该程序必须处理与文件/目录相关的大量信息(所以或多或少我有一个路径作为键)。目前我已经尝试使用哈希表实现。考虑到数据量,这似乎工作得相当好,但在分析后我发现它们仍然是系统中最慢的链接,所以为了改进我考虑使用 Trie。
我发现以下(C 实现)http://linux.thai.net/~thep/datrie/datrie.html 并阅读那里的文档似乎相当不错。然而,在尝试编写一个简单的测试 sn-p 时,我最终遇到了一个奇怪的链接错误。
奇怪的是:有问题的函数存在(在它那里,在cpp文件中)并且创建了目标文件,那么为什么会出现链接错误?
我的代码:
#include <iostream>
#include <datrie/trie.h>
extern int main(int, char**)
{
// create character map covering unicode characters
AlphaMap *map = alpha_map_new();
AlphaChar start = 32, end = 1114111;
alpha_map_add_range(map, start, end);
// create a trie and test it
Trie *test = trie_new(map);
const AlphaChar key[] = {0x64,0x64,0x64,0x64};
trie_store(test, key, 3);
TrieData *data;
trie_retrieve(test, key, data);
std::cout << *data << std::endl;
return 0;
}
错误(简化并换行以提高可读性)
main.obj : error LNK2001: unresolved external symbol
"int __cdecl alpha_map_add_range(struct _AlphaMap *,unsigned int,unsigned int)"
main.obj : error LNK2001: unresolved external symbol
"struct _AlphaMap * __cdecl alpha_map_new(void)"
使用 Visual Studio 2010
【问题讨论】:
标签: c++ c visual-studio-2010 linker