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

Đề tài: Tìm hiểu về việc biên dịch trong C++

  1. #1
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mặc định Tìm hiểu việc biên dịch của Visual studio C++6.0 trong lập trình C++

    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:
    C++ Code:
    1. #ifndef test_h
    2. #define test_h
    3.   void F1();
    4. #endif

    Tạo ra một file test.cpp có nội dung như sau:
    C++ Code:
    1. #include "test.h"
    2. #include <iostream.h>
    3. void F1()
    4. {
    5.   cout<<"Toi la test!\n";
    6. }

    Khi đó trong file main.cpp:
    C++ Code:
    1. #include <iostream.h>
    2. #include "test.h"
    3. void main()
    4. {
    5.   cout<<"Hello world!\n";
    6.   F1();
    7. }

    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().
    In code we trust

  2. #2
    Ngày gia nhập
    07 2007
    Bài viết
    4

    Các bạn bít cách nào viết code để sử dụng trình biên dịch của VC biên dịch mã nguồn không?

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    9

    # ndthaiit : ông hỏi cái gì tui không hiểu
    360 yahoospacetime blog
    Tripod blog
    cũng của spacetime trên wordpress
    The god programmin language-C
    My name is 7h36h5ng
    password yahoo:mDn4kdn1z

  4. #4
    Ngày gia nhập
    07 2007
    Nơi ở
    Lang thang không nơi nương tựa
    Bài viết
    18

    Tôi thấy câu hỏi của bạn ấy cũng dễ hiểu đấy chứ .Chắc định xây dựng một IDE dựa trên bộ dịch của VC++ à ?

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    cho mình hỏi iamvtn là cái Visual C++ 6.0 này có gì giống và khác nhau với Visual C++ 2005 không ? Mình dùng visual C++ 2005 mà nhiều khi có 1 vài tệp như include<graphic.h> hay include <window.h> bị bug hoài ! Bạn có thể viết 1 bài hướng dẫn cho mình được không ? cám ơn bạn rát nhiều ! bài viết của bạn rất hay và bổ ích~~

  6. #6
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Tìm hiểu về việc biên dịch trong C++

    nhiều khi có 1 vài tệp như include<graphic.h> hay include <window.h> bị bug hoài
    Ko phải bị bug mà do bạn khai báo sai, chính xác là:
    #include "graphics.h"
    #include "windows.h"

  7. #7
    Ngày gia nhập
    07 2007
    Bài viết
    3

    Sao mấy bạn cứ lấy kiến thức về TC++ hay BC++ mà dùng cho VC++ vậy! Trong VC++ hoàn toàn không có "Graphics.h" nên bạn có include như thế nào đi nửa thì vẩn vậy thôi!
    - Bạn chỉ có thể dùng đồ họa trong VC++ bằng cách dùng Device context mà thôi (HDC)
    - Mổi hảng khi tạo ra một compiler thì họ sẻ có riêng các file header và lib của họ chứ đâu phải cứ là C++ compiler thì bắt buộc phải có tất cả các file header và lib giống nhau đâu!

  8. #8
    Ngày gia nhập
    09 2010
    Bài viết
    13

    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
    vậy trong cửa sổ cmd thì gõleengh gì để dịch ra file obj vậy bác?

  9. #9
    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 ck47ht Xem bài viết
    vậy trong cửa sổ cmd thì gõleengh gì để dịch ra file obj vậy bác?
    Đây, tha hồ mà nghiên cứu: http://msdn.microsoft.com/en-us/library/9s7c9wdw(v=vs.71).aspx

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

  1. Kỹ thuật C++ từ trình biên dịch Borland C++ sang trình biên dịch Dev-C++ bị lỗi
    Gửi bởi 0baohbotay1 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: 11-08-2012, 11:14 PM
  2. Hướng dẫn biên dịch thành file .dll trong web asp.net
    Gửi bởi vietvoquoc90 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 15-10-2011, 11:42 AM
  3. [bada] thư viện static lib do gcc biên dịch ra trong app được biên dịch g++
    Gửi bởi Iphone4 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 10-08-2011, 04:53 PM
  4. Chương trình không biên dịch lại trong VS 2010
    Gửi bởi bulubuloa trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 11-01-2011, 11:24 AM
  5. Biên dịch chương trình C++ trong VC++.net
    Gửi bởi zazabovn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 16
    Bài viết cuối: 06-05-2009, 07:02 PM

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