C和C 編寫 呼叫動態鏈結庫的方法

2021-06-27 15:25:05 字數 1365 閱讀 7801

1. 如何編譯生成dll和lib檔案

2. 如何在外部程式呼叫dll(動態鏈結)並訪問其函式

3. 如何在外部程式呼叫lib(靜態鏈結)並訪問其函式

一、如何編譯生成dll和lib檔案

1. 新建win32控制台程式,勾選dll

2. 新建mydll.h檔案,寫入**:

#ifndef _class_h_

#define _class_h_

//declaration

extern "c" __declspec(dllexport) int add(int a ,int b);

#endif

3. mydll.cpp檔案,寫入**:

#include "stdafx.h"

#include "classdll.h"

//implement

__declspec(dllexport) int add(int a ,int b)

二、外部呼叫dll

#include "stdafx.h"

#include #include using namespace std;

/*dynamic call*/

typedef int(*lpaddfun)(int, int);

int _tmain(int argc, _tchar* argv)

{ /* dynamic call */

hinstance hdll;

lpaddfun addfun;

hdll = loadlibrary(l"e:/classdll.dll");

if (hdll != null)

{ addfun = (lpaddfun)getprocaddress(hdll, "add");

if (addfun != null)

{ int result = addfun(2, 3);

cout<

#include "stdafx.h"

#include "doorfsm.h"

#include #include using namespace std;

/*static call*/

#pragma comment(lib,"d:/classdll.lib")

extern "c" __declspec(dllimport) int add(int x,int y);

int _tmain(int argc, _tchar* argv)

{ /* static call */

int result = add(2,3);

cout<

C 呼叫C 動態鏈結庫方法介紹

下面介紹c 呼叫c 動態鏈結庫方法。新增system.runtime.interopservices命名空間 如是com就直接用靜態函式呼叫 public static int getnum int lfileseqno,string ttype,string tnumber,string sfor...

Delphi呼叫C 編寫的動態鏈結庫dll的方法

首先宣告這個dll中的函式,然後就可以直接呼叫了 function addnum num1,num2 integer integer stdcall external project1.dll name addnumber function addnum num1,num2 integer inte...

C 呼叫C 動態鏈結庫dll

在過程中發現兩種方法解決問題 一種是非託管c 建立的dll庫,需要用靜態方法呼叫。這種方法無法在c 的reference中直接引用,而是要用靜態呼叫的方法,其他部落格已經介紹的很詳盡,唯一需要補充的是,c 檔案需要先 usingsystem.runtime.interopservices 之後才可以...