我在这里敲我的头..试图解决这些LNK2001错误。帮助页面给出了很多原因,但我看不出哪一个适用。
请知道这位知识渊博的VS 2005 C ++人员可以提供这些帮助吗?问我问题..有时候有帮助。如果我不害怕看起来像一个心理学家,我会得到一个橡皮鸭来解释这个:-)但我坐在办公室里。
错误LNK2001:未解析的外部符号“struct ethernetParams_t * ethernetData_g“(?ethernetData_g @@ 3PAUethernetParams_t @@ A) simple_Console.obj
我的代码simple_console.cpp正在尝试使用C中定义的结构,但#includes的工作方式和#stdafx超出了我的范围。包含ethernetParams_t的头文件包含在stdafx.h中
#include "CON_ethernet_defs.h"
请问离开...是@@后面的线索?
答案 0 :(得分:1)
链接器告诉您存在类型为ethernetData_g
的未知外部符号struct ethernetParams_t *
。原因是尽管在您包含的标头中声明了ethernetData_g
,但它的定义来自您需要链接的另一个目标文件。由于您没有链接approriate对象文件,链接器无法找到正确的定义
您缺少的目标文件必须来自您尝试使用的库,因此请查看该文件夹中的.obj文件
答案 1 :(得分:1)
为了使用其他人开发的代码(例如在你的情况下使用静态库),你需要两件事:
看起来你做了第一件事而不是第二件事。这是如何解释链接器以这种非常神秘的形式给出的错误...
答案 2 :(得分:0)
@Attila和@mox可能会将其钉住:您需要链接包含您正在使用的函数实现的obj
或lib
文件。
如果在解决方案资源管理器中右键单击项目,单击“属性”,然后选择“链接器”|“输入”,可以查看和编辑要链接到的库/目标文件列表(“其他依赖项”)。
你说结构是用C而不是C ++定义的,另一个可能的问题是包含文件中缺少extern "C"
,请参阅解释here。