Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Lỗi [Linker error] undefined reference to `WinMain@16'

  1. #1
    Ngày gia nhập
    02 2011
    Bài viết
    1

    Mặc định Lỗi [Linker error] undefined reference to `WinMain@16'

    Em có 2 file CPP là maindovat và DOVATNEW nhưng khi chạy file DOVATNEW nó báo lỗi [Linker error] undefined reference to `WinMain@16' mong được các anh (chị) và các bạn giúp đỡ

    maindovat.cpp

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <iostream.h>
    #include <fstream.h>
    #include "J:\dovatnew.cpp"
    
    int i,n,Max;  //so loai do vat dua vao
    dovat a[30];
    float tgt=0; //tong gia tri hien tai cua ba lo
    float w; // trong luong con lai cua ba lo
    float ct;
    
    //---------------------------------
    void nhap()
    {
    	cout<<"Nhap trong luong cua ba lo: ";cin>>w;
    	cout<<"Nhap so loai do vat dua vao: ";cin>>n;
    	for(i=0;i<n;i++)
    	{
    		a[i].nhapdv();
    		cout<<endl<<endl;
    	}
    	for(i=0;i<n-1;i++)
    	{	for(int j=i;j<n;j++)
    		{
    			dovat t;
    			if(a[i].laydgia()<a[j].laydgia())
    			{
    				t=a[i];
    				a[i]=a[j];
    				a[j]=t;
    			}
    		}
    	}
    }
    //---------------------------
    /*
    void in()
    {
    	cout<<"Trong luong ba lo: "<<w<<endl;
    	cout<<"So loai do vat dua vao la: "<<n<<endl;
    	for(i=0;i<n;i++)
    	{
    		cout<<"------------------------"<<endl;
    		a[i].indv();
    		cout<<"An phim bat ky de xem tiep!"<<endl;
    		getch();
    	}
    } */
    //----------------------------------
    void ghi()
    {
        ofstream write("c:\\test.txt");
    	write<<w<<endl;
        write<<n<<endl;
        for (i= 0;i<n;i++)
        {
    	 write<<a[i].ten<<endl;
    	 write<<a[i].sluong<<endl;
    	 write<<a[i].tluong<<endl;
    	 write<<a[i].gtri<<endl;
    	 //write<<a[i].dgia<<endl;
        }
    	write.close();
    }
    //---------------------------------
    void doc()
    {
    
    	ifstream read("c:\\test.txt");
    	if (!read)
    	{
    		ofstream ghi("c:\\test.txt");
    		ghi.close();
    	}
    	read>>w;
    	read>>n;
    
    	for (i=0;i<n;i++ )
    	{
    		read.get();
    		read.getline(a[i].ten,20);
    		read>>a[i].sluong;
    		read>>a[i].tluong;
    		read>>a[i].gtri;
    		a[i].dgia=(a[i].gtri/a[i].tluong);
    	}
    	read.close();
    }
    //--------------------------------
    
    int chonvat (int TGT, int w, int CT, int Max, int k, int sl)
        {
    	    if (CT>Max)
    	    {
    		if (k+1==n)
    		{
    			TGT=TGT + sl*a[k].gtri;
    			w=w - sl*a[k].tluong;
    			CT=TGT + w*a[k].gtri;
    			k=k+1;
    			sl=a[k+1].sluong;
    			return chonvat(TGT, w, CT, Max, k, sl);
    		}
    		if ((w<0) && (sl>0))
    		{
    			TGT=TGT + sl*a[k].gtri;
    			w=w - sl*a[k].tluong;
    			CT=TGT + w*a[k].gtri;
    			k=k+1;
    			sl=a[k+1].sluong;
    			return chonvat(TGT, w, CT, Max, k, sl);
    		}
    		else if ((CT>Max) && (sl==0))
    		{
    		 TGT=TGT + sl*a[k].gtri;
    		 w=w - sl*a[k].tluong;
    		 CT=TGT + w*a[k].gtri;
    		 Max=CT;
    		 return chonvat(TGT, w, CT, Max, k, sl);
    		}
    	    }
    	    return Max;
        }
    
    //-------------------------------
    void main()
    {
    	clrscr();
    	nhap();  // nhap trong luong ba lo, so do vat, va thong tin do vat.
    	//in();    // in trong luong ba lo, so do vat, va thong tin do vat.
    	ghi();
    		/* ghi len file theo dong: dong dau la trong luong balo, dong 2 la so luong do vat, tu dong 3 tro di la thong tin do vat
    		    theo thu tu: ten, so luong, trong luong, don gia */
    	doc();
    	//in();
    	int tlmax;
    	cout<<"Trong luong ba lo: "<<w<<endl;
    	tlmax=chonvat(0,w,0,0,0,a[0].sluong);
    	cout << tlmax;
    	getch();
    }
    DOVATNEW.cpp

    Code:
    #ifndef cdovat
    #define cdovat
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include <iostream.h>
    #include <windows.h>
    
    class dovat
    {
    	    char *ten;
     	    float sluong, tluong,gtri,dgia;
    		
    	public:
    		dovat();
    		dovat(char*,float,float,float,float);
    		~dovat() { delete[] ten;}
    		dovat(const dovat&);
    		void operator = (const dovat&);
    		void nhapdv();
    		void indv();
    		char* layten() {return ten;}
    		/*float laydgia() {return dgia;}
    		float laytluong() {return tluong;}
    		float laygtri() {return gtri;}
    		float laysluong() {return sluong;}*/
    		float laydgia() {return dgia;}
    		float laytluong() {return tluong;}
    		float laygtri() {return gtri;}
    		float laysluong() {return sluong;}
    		friend void ghi();
    		friend void doc();
    		friend int chonvat (int, int, int, int, int, int);
    		friend int main();
    };
    dovat::dovat()
    {
    	ten=new char[20];
    	strcpy(ten," ");
    	sluong=tluong=gtri=dgia=0;
    }
    //--------------------------------
    dovat::dovat(char *t,float sl,float tl,float gt,float dg)
    {
    	strcpy(ten,t);
    	sluong=sl;
    	tluong=tl;
    	gtri=gt;
    	dgia=dg;
    }
    //----------------------------------
    dovat::dovat(const dovat& dv)
    {
    	strcpy(ten,dv.ten);
    	sluong=dv.sluong;
    	tluong=dv.tluong;
    	gtri=dv.gtri;
    	dgia=dv.dgia;
    }
    //--------------------------------
    void dovat::operator = (const dovat& dv)
    {
    	delete[] ten;
    	ten=new char[20];
    	strcpy(ten,dv.ten);
    	sluong=dv.sluong;
    	tluong=dv.tluong;
    	gtri=dv.gtri;
    	dgia=dv.dgia;
    }
    //--------------------------------
    void dovat::nhapdv()
    {
    	cout<<"Nhap ten do vat:         ";gets(ten);
    	cout<<"Nhap so luong do vat:    ";cin>>sluong;
    	cout<<"Nhap trong luong do vat: ";cin>>tluong;
    	cout<<"Nhap gia tri do vat:     ";cin>>gtri;
    	dgia=(gtri/tluong);
    }
    //--------------------------------
    void dovat::indv()
    {
    	cout<<"Ten do vat:         "<<ten<<endl;
    	cout<<"------------------------"<<endl;
    	cout<<"So luong do vat:    "<<sluong<<endl;
    	cout<<"------------------------"<<endl;
    	cout<<"Trong luong do vat: "<<tluong<<endl;
    	cout<<"------------------------"<<endl;
    	cout<<"Gia tri do vat:     "<<gtri<<endl;
    	cout<<"------------------------"<<endl;
    	cout<<"Don gia do vat:     "<<dgia<<endl;
    	cout<<"------------------------"<<endl;
    }
    //-----------------------------------
    
    /*void main()
    {
    	dovat a;
    	a.nhapdv();
    	clrscr();
    	a.indv();
    	getch();
    }*/
    #endif

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Lỗi này là lỗi chưa có hàm main Hàm main ở file nào thì phải chạy file đó

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    Lỗi này là lỗi chưa có hàm main Hàm main ở file nào thì phải chạy file đó
    Bạn giải thích rõ hơn được không, mình cũng gặp lỗi này khi đa năng hóa toán tử << >> cho lớp template :(
    Code:
    // Class automatically generated by Dev-C++ New Class wizard
    
    #ifndef VECTO_H
    #define VECTO_H
    #include <iostream>
    
    using namespace std;
    template <typename T>
    class Vecto{
          int n;
          T *Data;
    	public:
    		// class constructor
    		Vecto<T>(int size=1);
    		// class destructor
    		~Vecto<T>();
                    int getn(){return n;}
    		Vecto<T> operator +(const Vecto<T> &x);
    		Vecto<T> operator -(const Vecto<T> &x);
    		Vecto<T> operator *(const Vecto<T> &x);
    		const Vecto<T> operator =(const Vecto<T> &x);
    		Vecto<T> operator [](int i);
    		friend istream &operator >>(istream &in, Vecto<T> &x);
    		friend ostream &operator <<(ostream &out, Vecto<T> &x);
    };
    
    #endif // VECTO_H
    Code:
    #include "vecto.h" // class's header file
    #include <iostream>
    
    using namespace std;
    // class constructor
    template <typename T>
    Vecto<T>::Vecto(int size):n(size){
    	Data= new T  [n];
    }
    // class destructor
    template <typename T>
    Vecto<T>::~Vecto(){
    	delete []Data;
    }
    template <typename T>
    ostream &operator <<(ostream &out, Vecto<T> &x){
            cout<<x.getn();
            return out;
    }
    Code:
    #include <cstdlib>
    #include <iostream>
    #include "vecto.h"
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        Vecto<int> vt(2);
        cout<<vt;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    THanks!

  4. #4
    Ngày gia nhập
    02 2011
    Nơi ở
    hà nội
    Bài viết
    131

    @thubab2: Lỗi ở 2 bài là khác nhau
    - Nhưng chưa run thử (vì ko có đồ nghề): Nhưng nghĩ lỗi của bạn là ko liên kết được các file thôi
    - Còn bài thứ nhất có 2 hàm main ()
    Chia tay bình minh

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi thubab2 Xem bài viết
    Bạn giải thích rõ hơn được không, mình cũng gặp lỗi này khi đa năng hóa toán tử << >> cho lớp template :(
    Lại là lỗi kinh điển về template. Phần khai báo và phần cài đặt phải thuộc cùng file mới được.
    Không thích thì nghiên cứu thêm về template extern.

Các đề tài tương tự

  1. Khởi tạo chế độ đồ họa trong c lỗi: Linker Error: Undefined symbol _initgraph()?
    Gửi bởi hyl trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 21
    Bài viết cuối: 20-09-2012, 08:56 AM
  2. Bài tập C++ Lỗi [Linker error] undefined reference to - Không liên kết được thư viện riêng trong Dev-Cpp
    Gửi bởi grey lady trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 26-02-2012, 12:15 AM
  3. Bài tập C linker error: undefined symbol main in module c0.ASM
    Gửi bởi theblue0310 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 27-05-2011, 08:38 PM
  4. Trả lời: 9
    Bài viết cuối: 05-05-2011, 04:55 PM
  5. Lỗi Linker undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 16-03-2010, 01:11 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn