致命错误LNK1561 - 必须定义入口点

Fatal error LNK1561 - entry point must be defined

本文关键字:定义 入口 LNK1561 致命错误      更新时间:2023-10-16

到目前为止,我已经创建了一个简单的链表项目,我将在未来的基础上进行构建。所有文件都可以正确编译,但是当我尝试构建我的项目时,它会出现链接错误。我使用了一个空项目来启动。main.cpp 用于演示我的链表实际工作。我真的很困,不知道如何解决这个问题。

主.cpp

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include "LinkedList.cpp"
#include "LinkedList.h"
using namespace SDI;
template <class T>
int LinkedList<T>::main()
{
    LinkedList<T> menu;             
    menu.insert(1);                     
    menu.insert(4);
    menu.insert(7);
    menu.insert(2);
    menu.insert(8);
    menu.display();                 
    Std::cout << "-----" << endl;
    menu.remove(2);                     
    menu.remove(1);
    menu.remove(10);
    menu.display();
    return 0;
};

头文件 LinkedList.h

#ifndef SDI_LL 
#define SDI_LL          
namespace SDI
{
    template < class T >                
    class LinkedList                
    {
        class Node                   
        {
            int number;             
            Node* next;            
        };
    private:
        T head;
        T current;        
        T temp;
    public:
        LinkedList();                                   
        ~LinkedList();                                  
        int main();
        void insert(int add);                           
        void remove(int remove);                       
        void display();                                 
    };
}
#endif

链接列表.cpp

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <string>
#include "LinkedList.h"
using namespace SDI;
template <class T>
LinkedList<T>::LinkedList()            
{
    head = NULL;
    current = NULL;                     
    temp = NULL;
};
template <class T>
void LinkedList<T>::insert(int add)         
{
    newnode = new Node;         
    newnode->next = NULL;                       
    newnode->number = add;                  
    if (head != NULL)                       
    {
        current = head;                     
        while (current->next != NULL)       
        {
            current = current->next;            
        }
        current->next = newnode;
    }
    else
    {
        head = newnode;                        
    }
};
template <class T>
void LinkedList<T>::remove(int remove)          
{
    remove1 = NULL;             
    temp = head;
    current = head;
    while (current != NULL && current->add != remove)           
    {
        temp = current;                                                     
        current = current->next;                                            
    }
    if (current == NULL)                                            
    {
        std::cout << "N/An";
        delete remove1;                                             
    }
    else
    {
        remove1 = current;                                          
        current = current->next;                                    
        temp->next = current;                                       
        if (remove1 == head)                                        
        {
            head = head->next;                                      
            temp = NULL;
        }
        delete remove1;
    }
};
template <class T>
void LinkedList<T>::display()
{
    current = head;                                                 
    while (current != NULL)                                         
    {
        std::cout << current->number;
        current = current->next;                                
    }
};

程序中需要一个全局main()函数,而不是 LinkedList 中的静态版本。main 函数称为入口点,快速查找错误消息会告诉您这一点。

http://en.cppreference.com/w/cpp/language/main_function

类似这样的东西可能会起作用:

int main()
{
    LinkedList<int> menu;             
    menu.insert(1);                     
    menu.insert(4);
    menu.insert(7);
    menu.insert(2);
    menu.insert(8);
    menu.display();                 
    Std::cout << "-----" << endl;
    menu.remove(2);                     
    menu.remove(1);
    menu.remove(10);
    menu.display();
    return 0;
};

目前,您在类中定义了一个完全不相关的"main"函数。这只是类的一个普通正常函数,与前面提到的int main()入口点函数无关。