1

我知道这是一个常见错误(在 Visual Studio C++ 中),原因有很多,但我认为我已经排除了What is an undefined reference/unresolved external symbol error and how to fix it ? - 我已经在 .lib 文件中链接了这些东西应该被定义的地方(它是由我拥有的示例应用程序链接的唯一 .lib ,它使用相同的 .h 文件 - 我在这里做的基本点是尝试将该 .lib 包装为 .dll 以便我可以将它与 C# 一起使用)。尽管仅包含一个 .lib 而没有与 .h 对应的 .cpp ,但示例应用程序编译正常这一事实肯定意味着 .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;
4

1 回答 1

0

正如 Hans Passant 有用地解释的那样,有问题的未解决符号是handleRequest(class std::basic_string). 链接器在我希望找到它的 .lib 中找不到此函数的这种特殊形式;为什么在 .h 文件中声明它,我不知道,但碰巧它对我想要做的事情并不重要。还有另一种形式的函数,它同时接受一个字符串和一个回调函数,这对于我的目的来说已经足够了。

那么,我的问题一直是声明的和未定义的函数。我错误地排除了这一点,因为示例应用程序使用了相同的函数并且编译良好 - 但它使用了不同版本的函数,如果我能够在心理上解析详细错误消息告诉我的内容,我可能有看到了。

于 2013-07-21T09:53:52.563 回答