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

Đề tài: Exec: Lib, Dll and Exe

  1. #1
    Ngày gia nhập
    08 2017
    Bài viết
    3,202

    Mặc định Exec: Lib, Dll and Exe

    B0: tham khảo
    http://diendan.congdongcviet.com/threads/t447706::van-de-su-dung-de-quy-de-them-dau-sao-vao-giua-cac-ky-tu-trong-chuoi.cpp

    Không phải lúc nào cũng cần chi li, mẫn cán viết hết cốt kiếc để tạo exe.
    Theo OPP, ta có thể tạo thư viện, dùng lại cho nhiều ứng dụng, và che giấu (hide) việc cài đặt.

    B1: thực hiện cho topic trên
    + A tạo thư viện lib và dll
    C Code:
    1. #include <windows.h>
    2. #include <stdio.h>
    3.  
    4. char* Loop(char* src, int n){  
    5.     const char whs = ' ';
    6.     char* dst = new char[2 * n - 1];
    7.     dst[0] = src[0];
    8.    
    9.     int k = 1;
    10.     for( int i = 1; i < n; i++){
    11.         if( src[i] != whs && src[i - 1] != whs)
    12.             dst[k++] = '*';
    13.         dst[k++] = src[i];
    14.     }
    15.    
    16.     dst[k] = 0;
    17.     return dst;
    18. }
    19.  
    20. extern "C" __declspec(dllexport) char* allStar(char* src){//last char is '\n'
    21.     int n = strlen(src);
    22.     if(n < 2) return src;  
    23.     return Loop(src, n - 1);
    24. }
    25.  
    26. BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){
    27.     switch(fdwReason){
    28.         case DLL_PROCESS_ATTACH:
    29.            puts("===In DLL_PROCESS_ATTACH===\n");
    30.            /*
    31.            CheckIn - Init
    32.            */
    33.            break;
    34.         case DLL_PROCESS_DETACH:
    35.            puts("\n===In DLL_PROCESS_DETACH===");
    36.            /*
    37.            CheckOut - Release
    38.            */
    39.            break;
    40.     }
    41.     return TRUE;
    42. }

    + B tạo ứng dụng exe
    C Code:
    1. //header - interface
    2. extern "C" __declspec(dllimport) char* allStar(char* src);
    3.  
    4. #include <iostream>
    5. using namespace std;
    6.  
    7. int main(){
    8.     char a[100];
    9.     cout << "input string: ";
    10.     fgets(a, 100, stdin);
    11.  
    12.     cout << allStar(a) << endl;
    13.     //cout << "\nDone, bye.";
    14.    
    15.     return 0;
    16. }

    biên dịch chạy, như sau:
    Dos Code:
    1. F:\Yr2019\cpp\dLibs\Test\Binn>Exec
    2. ===In DLL_PROCESS_ATTACH===
    3.  
    4. input string: abc hello
    5. a*b*c h*e*l*l*o
    6.  
    7. ===In DLL_PROCESS_DETACH===

    Lúc thuận tiện nói tiếp.

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    3,202

    Không dùng tới khái niệm cao xiêu như địa chính trị - namespace, lớp - class, tầm vực - scope (private, protected , internal , public) ...

    Nó tạm đủ để che (hide) việc cài đặt


    Nó được đề cập nhiều trong sgk, giáo trình; ai ai cũng biết khi học i tờ.

    PS: OPP, ở trên bị lỗi đánh máy, vui lòng sửa lại OOP, Object-oriented programming.

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    3,202

    B2: biên dịch có thể dùng một trong nhiều cách khác nhau, trong IDE - VS, bằng MsBuild.exe hay command line tools.

    lib file như trên dùng cho việc liên kết biên dịch; dll thì cần cho quá trình chạy của exe, nó có thể đặt đâu đó miễn sao exe có thể liên hệ được, không nhất thiết cùng thư mục.

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