1.先建立乙個動態鏈結庫的工程
vs下,file->new project->win32 project->dll
t.h
#ifdef myapi_export
#define myapi _declspec(dllexport)
#else
#define myapi _declspec(dllimport)
#endif
myapi int fun();
#define myapi_export
class testclass;
t.cpp
然後再建立乙個普通的工程,在使用時include t.h就可以在程式中使用export出的函式或類了
#include "stdafx.h"
#include "t.h"//我把上面的t.h拷到這個工程下了
#include
using namespace std;
int main()
t.h
#ifdef myapi_export
#define myapi _declspec(dllexport)
#else
#define myapi _declspec(dllimport)
#endif
myapi int fun();
#define myapi_export
class myapi testclass;
要讓上面的能跑起來,需要將第乙個工程生成的lib,dll拷貝到當前目錄下,然後在linker->input->additional dependencies中加上t.lib這個引入庫
2.如果想要動態載入,則需要呼叫loadlibrary,在此就不講了.
_stdcall
[url]
remove 下劃線
def檔案
關於_stdcall去下劃線的問題總結一下
在vs2008下有2種方法
1.根據depends檢視的函式名,比如說add(),
加上#pragma comment(linker,"/export:add=_add@0")就可以了,我生成的是_add@0
2.增加def檔案linker->input->module define file加上你的def
具體內容,我的是這樣的
library testdll2
exports
addadd1
在qt中第一種方法同樣可用,第二種需要在pro裡面加上
def_file += ***.def//***為你的檔名,當然路徑得設對,我的就是和原始碼在同一目錄
動態鏈結庫使用 靜 動態鏈結庫使用總結
一 靜態庫編寫 1.首先當然是開vs然後建立乙個靜態庫工程啦 2.格式.一般有標頭檔案.h和原檔案.cpp,當然你也可以寫一在乙個cpp裡.mydll.h extends c mydll.cpp include mylib.h int sum int num1,int num2 int mult i...
使用動態鏈結庫
1.動態鏈結庫是程式執行時載入的庫,當動態鏈結庫正確安裝後,所有的程式都可以使用動態庫來執行程式。動態鏈結庫是目標檔案的集合,目標檔案在動態鏈結庫中的組織方式是按照特殊方式形成的。庫中函式和變數的位址是相對位址,不是絕對位址,其真實位址在呼叫動態庫的程式載入時形成。2.動態鏈結庫的名稱有別名 son...
動態鏈結庫 靜態鏈結庫
包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...