错误LNK2019:无法parsing的外部符号_main在函数___tmainCRTStartup中引用

我不知道什么是错的..我找不到错误在哪里,注释掉实现也不能解决错误。

头文件

#ifndef MAIN_SAVITCH_SEQUENCE_H #define MAIN_SAVITCH_SEQUENCE_H #include <cstdlib> // Provides size_t namespace main_savitch_3 { class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type CAPACITY = 30; // CONSTRUCTOR sequence( ); // MODIFICATION MEMBER FUNCTIONS void start( ); void advance( ); void insert(const value_type& entry); void attach(const value_type& entry); void remove_current( ); // CONSTANT MEMBER FUNCTIONS size_type size( ) const; bool is_item( ) const; value_type current( ) const; private: value_type data[CAPACITY]; size_type used; size_type current_index; }; } #endif 

资源

 #include "sequence1.h" #include <assert.h> namespace main_savitch_3 { // Default constructer - sequence is empty sequence::sequence() { used = current_index = 0; } // Start the iteration void sequence::start() { current_index = 0; } // Iterate void sequence::advance() { current_index++; } // Number of items in the sequence sequence::size_type sequence::size() const { return used; } // Checks if there is a current item bool sequence::is_item() const { return current_index <= used && used > 0; } // Returns the current value sequence::value_type sequence::current() const { assert(is_item()); // no current item return data[current_index]; } // Adds an item BEFORE the current index void sequence::insert(const value_type& entry) { assert(entry != 0); // pointer is invalid assert(current_index < sequence::CAPACITY); // no room to add an item // move items up - starting with the last item and working down to the current item // arrays start at 0, so the -1 adjusts it for (size_type i = used - 1; i >= current_index; i--) data[i + 1] = data[i]; data[current_index] = entry; } // Adds an item AFTER the current index void sequence::attach(const value_type& entry) { assert(entry != 0); // pointer is invalid assert(current_index < sequence::CAPACITY); // no room to add an item // move items up - starting with the last item and working down to the current item // arrays start at 0, so the -1 adjusts it for (size_type i = used - 1; i > current_index; i--) data[i + 1] = data[i]; if (current_index = 0) data[used] = entry; else data[current_index + 1] = entry; } // Removes the current item void sequence::remove_current() { for (size_type i = current_index; i < used; i++) data[i] = data[i + 1]; } } 

即使你的项目有一个main()方法,链接器有时也会感到困惑。 您可以通过转到Visual Studio 2010中解决此问题

项目 – >属性 – >configuration属性 – >链接器 – >系统

并将SubSystem更改为控制台。

我们也有这个问题。 我的同事find了一个解决scheme。 它变成了第三方库头中“主”的重新定义:

 #define main SDL_main 

所以解决办法是增加:

 #undef main 

之前我们的主要function。

这显然是一个愚蠢的!

如果您的项目中有_tmain函数,则需要include <tchar.h>.

你需要一个main()函数,所以程序知道从哪里开始。

如果有人错过了明显的; 注意如果你构build一个GUI应用程序并使用它
在链接参数“ -subsystem:windows ”中,应用程序条目是WinMain @ 16 不是main()因此,你可以使用这个片段来调用你的main()

 #include <stdlib.h> #include <windows.h> #ifdef __GNUC__ #define _stdcall __attribute__((stdcall)) #endif int _stdcall WinMain (struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance, char *lpszCmdLine, int nCmdShow) { return main (__argc, __argv); } 

你实现了main()函数吗?

 int main(int argc, char **argv) { ... code ... return 0; } 

[编辑]

你有你的main()在另一个源文件,所以你可能已经忘记将其添加到您的项目。

添加现有的源文件:在解决scheme资源pipe理器中 ,右键单击源文件文件夹,指向添加 ,然后单击现有项目 。 现在select包含main()的源文件

尽pipe:

  • 有一个main() ; 和
  • 将我的解决scheme中的所有其他项目configuration为静态库。

我最终的解决方法如下:

  • 我的main()是在一个命名空间,所以被有效地称为something::main() …删除这个命名空间解决了这个问题。

如果您正在使用Visual Studio。 您可能会收到此错误的原因可能是因为您最初创build了一个新的头文件file.h,然后将其重命名为file.cpp放置您的main()函数。

要解决这个问题,请右键单击file.cpp – >点击Properties去
configuration属性 – >常规 – >项目types,并将其值更改为C / C ++编译器而不是C / C ++头。

在Visual Studio 2013中处理DLL项目时遇到了LNK2019错误。

我为该项目添加了一个新的configuration。 但是,Visual Studio没有将“configurationtypes”设置为“dynamic库”,而是将其添加为“应用程序”。 这导致了LNK2019错误。

通过转到项目 – >属性 – >configuration属性 – >常规,并将“configurationtypes”更改为“dynamic库(.dll)”和“目标扩展名”为“.dll”来修复LNK2019错误。

是的,原来的问题谈到了一个控制台/应用程序项目,这是一个不同于我的答案的问题。 但我相信添加这个答案可能会帮助(如我一样)在这个线程上绊倒的人。

你似乎没有主要的function,这应该是你的程序的入口点。

转到“Project-Properties-Configuration Properties-Linker-input-Additional dependencies”,然后到最后input“; ws2_32.lib”。

检查您的标题(.h)和源文件(.cpp)是否已成功添加到解决scheme资源pipe理器中。 如果他们不这样复制和粘贴到子文件夹“头文件”和“源文件”。