c 動態庫打包為dll檔案供C 專案呼叫

2021-08-28 11:46:44 字數 2037 閱讀 1857

c++與c#接**互需要通過dll庫來完成。

建立專案:

新增c++測試類:

在mathapi.h定義介面方法:

#pragma once

class mathapi

;

在mathapi.cpp實現介面方法:

#include "pch.h"

#include "mathapi.h"

#include "stdexcept"

mathapi::mathapi()

mathapi::~mathapi()

double mathapi::add(double a, double b)

double mathapi::subtract(double a, double b)

double mathapi::multiply(double a, double b)

double mathapi::devide(double a, double b)

return a / b;

}

修改專案的屬性,輸出為動態庫dll:

然後生成即可。

利用vs提供的dumpbin.exe工具可以檢視dll的入口,在vs安裝目錄搜尋即可找到。

dumpbin的選項指令:

為了快速看到效果,直接將ffmpegdxva2dll.dll檔案複製到dumpbin.exe所在的目錄執行以下命令 :

上面輸出中?add@mathapi@@sannn@z 表示add函式的入口,我們在c#程式中使用時需要設定這個入口。

建立乙個c#控制台程式,並將我們需要的dll庫放入其中:

c#中定義dll介面訪問:

using system;

using system.collections.generic;

using system.linq;

using system.runtime.interopservices;

using system.text;

using system.threading.tasks;

namespace dllimporttest

}

program執行:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace dllimporttest}}

輸出結果:

至此,c#已經成功實現呼叫c++ 動態dll庫的功能了。

C 呼叫C 的動態庫dll

以往我們經常是需要使用c 來呼叫c 的dll,這通過pinvoke就能實現。現在在實際的專案過程中,有時會遇到在c 的專案中呼叫某個c 的dll來完成特定的某個功能,我們都知道,native c 是沒辦法直接呼叫.net平台的dll的。那有沒有辦法來做到這一點了?答案是肯定的。雖然,native c...

C 打包成DLL動態鏈結庫在Unity中去呼叫

很多時候我們在用unity的時候都會碰到一些c 的 而我們在unity中只能使用c 所以如果我們把c 直接打包成dll就可以直接呼叫其中的方法了 本人在這裡使用的是vs2017 1.新建c 專案 專案型別為 動態鏈結庫 dll 2.新建完成後會出現stdafx.h和targetver.h兩個標頭檔案...

c 總結系列( ) 動態庫(dll)

動態鏈結庫與靜態鏈結庫的區別 第一 靜態鏈結庫種的指令包含在可執行檔案中 exe 動態鏈結庫不會 第二 靜態鏈結庫中不能包含其他動態或靜態庫,動態鏈結庫可以。其他主要區別 dll 動態鏈結庫 的編制與具體的程式語言以及編譯器無關,visual basic,visial c delphi都可以使用他 ...