函数_main中引用了未解析的外部符号“*”

时间:2017-01-23 17:50:05

标签: c++ windows visual-studio linker

我是一名Linux用户,我在Windows下编程方面没有太多经验,所以我认为它是Visual Studio的一个问题,我必须使用它,或类似的......

我的代码非常简单:

myProgram.cpp

...
#include "rideList.h"
...
int main() {
   ...
   rideListMain();
   ...
}

rideList.h

...
void rideListMain();
...

rideList.c

void rideListMain() {
   // some code here...
}

实际上还有另外4个文件和类似的函数,比如 rideListMain(),编译器的输出是

LNK2019 unresolved external symbol "void __cdecl rideListMain(void)" (?rideListMain@@YAXXZ) referenced in function _main

解决方案

将* .cpp重命名为* .c解决了问题。

1 个答案:

答案 0 :(得分:2)

您将头文件包含在.cpp文件中一次,因此按标准C ++实现的方式修改名称,然后在实际定义类时在.c文件中包含相同的头文件,从而使用这个名字没有被扼杀。

正如链接器非常清楚地告诉你的那样,?rideListMain@@YAXXZ从未定义过。

  

我认为这是Visual Studio的一个问题

不,你对C和C ++的理解都存在问题。 extern "C"将在.cpp单元中声明未命名的类型名称,如果这是你想要的。