4.26.2012

Cách Biên Dịch Chương Trình Của Visual Studio C++

Posted by VieTrung (source: iamvnt) Bài 1. Biên dịch một chương trình đơn giản
Bước 1:
Bạn gõ một đoạn chương trình thật đơn giản (người ta vẫn thường coi đó là chương trình in ra màn hình chữ "Hello world!"), đoạn lệnh này nằm trong 1 file .cpp (main.cpp chẳng hạn). Sau đó nhấn F7.
(Tất nhiên là tôi đang nói tới chương trình không có lỗi).
Bước 2:
Mở trình quản lí thư mục (My Computer hoặc Explorer), vào đến thư mục chứa Project mà bạn tạo, rồi tìm thư mục có chữ "Debug".
Bước 3:
Quan sát trong thư mục đó ta thấy có rất nhiều files với các phần mở rộng (đuôi) khác nhau. Đặc biệt chú ý tới 2 file có tên là "main.obj" và "main.exe".


Vậy file main.obj và main.exe đó để làm gì? 


* File "main.obj" chứa chương trình đã được biên dịch sang mã máy.
* File "main.exe" là mã máy được sắp theo cấu trúc thực thi để có thể chạy trên nền hệ điều hành Dos hoặc Windows (thường gọi là file khả thi hay file thực thi).




Vậy khi nhấn F7, các công việc được thực hiện có thể tạm chia làm 02 giai đoạn:


* Giai đoạn 1: từ chương trình nguồn (code mà ta gõ) sang mã máy chứa trong file .obj.
* Giai đoạn 2: từ file .obj sang file .exe.


File .exe ở đây có thể chạy trên các máy tính khác nhau (máy đó có thể không cần cài VC++6.0, ...) nhưng phải là hệ điều hành DOS hoặc Windows trong trường hợp này (sẽ mở rộng đối với các hệ điều hành khác và trình biên dịch khác sau).


Câu hỏi:


* Nếu xóa file main.obj trong thư mục debug thì file main.exe có chạy và cho kết quả như mong muốn không?
* Nếu xóa file nguồn (main.cpp) và file khả thi (main.exe) đi, chỉ còn file main.obj thì có tạo được file main.exe không?


Trả lời 2 câu hỏi bài trước:


* Nếu xóa main.obj thì file main.exe vẫn chạy và cho kết quả như bình thường.
* Nếu xóa file mã nguồn (main.cpp) và file khả thi (main.exe) đi, thì từ file main.obj vẫn có thể tạo ra main.exe và file này chạy như bình thường.


Để làm được cách thứ 2, ta có thể vào cửa sổ cmd (Start --> Run --> cmd). Chuyển đến thư mục Debug. Gõ lệnh link main.obj rồi enter. Lập tức một file main.exe được tạo ra.




Bài 2: "VC++6.0 biên dịch một chương trình C++ khi có từ khóa #include một file .h nào đó"
Bạn tạo ra một file test.h trong cùng Project với file main.cpp của bài 1. Trong file test.h chứa khai báo một hàm (nguyên mẫu hàm), ví dụ:
void F1( ); chẳng hạn.
File test.h có nội dung như sau:


 #ifndef test_h  
 #define test_h  
   void F1();    
 #endif          



Tạo ra một file test.cpp có nội dung như sau:


 #include "test.h"        
 #include <iostream.h>    
 void F1()                
 {                        
   cout<<"I'm tester!\n"
 }                        

  cout<<"Toi la test!\n"
 }                        

Khi đó trong file main.cpp:


#include <iostream.h>      
#include "test.h"          
void main()                
{                          
  cout<<"Hello world!\n";  
  F1();                    
}                          



Thực hiện như bài 1 và quan sát. Đợi giải thích ở bài sau.


Sau khi nhấn F7 và vào thư mục Debug, ta thấy có files: main.obj, test.obj và bai2.exe.


* main.obj, test.obj chứa mã máy được biên dịch từ các đoạn lệnh trong các file tương ứng là main.cpp và test.cpp.
* bai2.exe chứa cấu trúc khả chạy của chương trình trên.


Các bạn thao tác theo một số đề nghị sau và tìm ra câu trả lời:


Dãy thao tác thứ nhất:


* Chỉ copy file main.obj vào một thư mục khác
* Vào Start --> Run --> CMD
* Chuyển đến thư mục chỉ có file main.obj
* Gõ link main.cpp
Vì không có file test.obj nên nó không tìm thấy định nghĩa của hàm F1().
Source: iamvtn (forum C Viet)

2 Nhận xét:

Tại lúc 01:43:00 GMT+7 26 tháng 4, 2012 , Anonymous Nặc danh nói...

Cám ơn bạn Trung rất nhiều....giờ mình đã hiểu tại sao tại có 2 file *.o và file *.exe.Môn lập trình C++ này chỉ có mình bạn mới có khả năng tư duy viết được chương trình,mình thấy mình không có khả năng đó, cứ tiếp tục phát huy và mình còn nhờ vaof bạn rất nhiều.hi hi hi....
Nguyễn Trọng Toàn.

 
Tại lúc 14:03:00 GMT+7 28 tháng 4, 2012 , Blogger Viet Trung nói...

Uhm, tất nhiên bạn bè phải giúp đở qua lại chứ, nhưng đừng nói như thế, tại bạn chưa thực sự nổ lực hết mình thôi, nếu bạn biết mình thức trắng một đêm để hiểu một chương trình thì việc mình viết một chương trình tương tự không có gì là ngạc nhiên cã ! Các bạn cũng làm được như vậy mà, cố lên !

 

Đăng nhận xét

Đăng ký Đăng Nhận xét [Atom]

<< Trang chủ