使用動態鏈結庫

2021-08-31 20:37:00 字數 1415 閱讀 9626

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...