我知道这是一个常见错误(在Visual Studio C ++中),原因相当广泛,但我认为我排除了What is an undefined reference/unresolved external symbol error and how do I fix it?的相关建议 - 我已经在.lib文件中链接了这些东西应该被定义(它是我使用相同.h文件的示例应用程序链接的唯一.lib - 我在这里做的基本点是尝试将.lib包装为.dll,以便我可以将它与C#一起使用。尽管只包含一个.lib而没有.cpp对应于.h肯定意味着.lib定义了.h中声明的内容(对吗?)...
如果我甚至可以放心地阅读此错误,这可能会有所帮助。 JSONRPCHandlerErrorType是未解析的符号吗?什么是@符号和看似随机的字母在那里做什么?
我很确定我必须遗漏一些明显的东西。非常感谢你能帮助我弄清楚是什么,并且如果我没有提供足够的信息继续道歉,或者我错过了之前关于此事的线索中应该清楚的事情,我感到很抱歉......
Error 1 error LNK2001: unresolved external symbol "public: enum JSONRPCHandlerErrorType __thiscall JSONRPCHandler::handleRequest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?handleRequest@JSONRPCHandler@@$$FQAE?AW4JSONRPCHandlerErrorType@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) C:\Users\Fergus\Documents\Visual Studio 2010\Projects\libspark\libspark\ManagedLibspark.obj ManagedLibspark
对于它的价值,这里是关于JSONRPCHandlerErrorType的.h文件的一点:
typedef enum {
JSONRPCHandlerErrorNone = 0,
JSONRPCHandlerErrorParsing,
JSONRPCHandlerErrorBadDocument,
JSONRPCHandlerErrorNoIdSpecified,
JSONRPCHandlerErrorNoObjectNameSpecified,
JSONRPCHandlerErrorNoMethodNameSpecified,
JSONRPCHandlerErrorNoParamsSpecified
} JSONRPCHandlerErrorType;
答案 0 :(得分:0)
正如Hans Passant所说,有问题的未解决的符号是handleRequest(class std::basic_string)
。链接器在我期望找到的.lib中找不到此函数的这种特殊形式;为什么它在.h文件中被声明,我不知道,但是当它发生时,它对我正在尝试做的事情并不重要。还有另一种形式的函数既可以使用字符串也可以使用回调函数,这对我来说就足够了。
然后,我的问题一直是declared and undefined function;我错误地排除了这一点,因为示例应用程序使用相同的函数并编译正常 - 但它使用了函数的不同版本,如果我能够在心理上解析详细错误消息是什么告诉我,我可能已经看到了。