Debug模式和Release模式下運行不一樣代碼的方法

    1. #ifdef _DEBUG
       
        #else
       
      # endif
       
      #ifdef _DEBUG
      #pragma comment(lib,"..\\debug\\LedCtrlBoard.lib")
      #else
      #pragma comment(lib,"..\\release\\LedCtrlBoard.lib")
      #endif
       
      轉自:http://www.cppblog.com/amazon/archive/2009/09/04/95318.html
       
       
       
      (1)隱式連接

      第一種方法是:經過project->link->Object/Library Module中加入.lib文件(或者在源代碼中加入指令#pragma comment(lib, 「Lib.lib」)),並將.dll文件置入工程所在目錄,而後添加對應的.h頭文件。html

      #include "stdafx.h"
      #include "DLLSample.h"

      #pragma comment(lib, "DLLSample.lib")    //你也能夠在項目屬性中設置庫的連接

      int main()
      {
              TestDLL(123);   //dll中的函數,在DllSample.h中聲明
              return(1);
      }
       
       

      (2)顯式連接
      須要函數指針和WIN32 API函數LoadLibrary、GetProcAddress裝載,使用這種載入方法,不須要.lib文件和.h頭文件,只須要.dll文件便可(將.dll文件置入工程目錄中)。ios

      #include <iostream>
      #include <windows.h>         //使用函數和某些特殊變量
      typedef void (*DLLFunc)(int);
      int main()
      {
              DLLFunc dllFunc;
              HINSTANCE hInstLibrary = LoadLibrary("DLLSample.dll");

              if (hInstLibrary == NULL)
              {
                FreeLibrary(hInstLibrary);
              }
              dllFunc = (DLLFunc)GetProcAddress(hInstLibrary, "TestDLL");
              if (dllFunc == NULL)
              {
                FreeLibrary(hInstLibrary);
              }
              dllFunc(123);
              std::cin.get();
              FreeLibrary(hInstLibrary);
              return(1);
      }
相關文章
相關標籤/搜索