關於用VS2015編寫動態鏈結庫的實戰

2021-08-04 04:58:04 字數 1914 閱讀 1861

本人c++小白,c#用得比較多。近日需要自己封裝乙個c++的動態鏈結庫來用,於是網上搜了資料,動手去做,然後遇到了不少問題,最後都一 一解決。所以把整個流程大約寫一下,備忘備忘。

1:標頭檔案裡匯出的巨集定義zmcfunc_api一定要加,原始檔裡的函式定義那塊兒這個巨集定義也要加

class zmcfunc_api czmcfunc ;

extern zmcfunc_api int nzmcfunc;

zmcfunc_api int fnzmcfunc(void);

zmcfunc_api int32 __stdcall zaux_openeth(char *ipaddr, zmc_handle * phandle);

zmcfunc_api int32 __stdcall zaux_transstringtofloat(const char* pstringin, int inumes, float* pfvlaue);

zmcfunc_api int32 __stdcall zaux_directcommand(zmc_handle handle, const char* pszcommand, char* psresponse, uint32 uiresponselength);

zmcfunc_api int32 __stdcall zaux_direct_setvrf(zmc_handle handle, int vrstartnum, int numes, float *pfvalue);

zmcfunc_api int32 __stdcall zaux_direct_getvrf(zmc_handle handle, int vrstartnum, int numes, float *pfvalue);

zmcfunc_api int32 __stdcall zaux_direct_settable(zmc_handle handle, int tabstart, int numes, float *pfvalue);

zmcfunc_api int32 __stdcall zaux_direct_gettable(zmc_handle handle, int tabstart, int numes, float *pfvalue);

2、我有新增別的依賴項。不僅要把要新增的檔案的.h和.lib檔案考到工作目錄,還要在程式裡#include包含.h檔案,然後在配置裡新增.lib檔案。具體怎麼在配置裡新增.lib

3、很重要的一點是要在原始檔裡新增模組定義檔案:source.def,沒有這個檔案的話,c#呼叫這個動態鏈結庫會函式出現找不到入口點的問題!!!下面是source.def的原始碼。library後面是你編寫的dll的名字,exports下面是要匯出的函式的名稱,按順序新增@和序號。

library "zmcfunc"

exports

zaux_openeth @1

zaux_transstringtofloat @2

zaux_directcommand @3

zaux_direct_setvrf @4

zaux_direct_getvrf @5

zaux_direct_settable @6

zaux_direct_gettable @7

4、如果程式中沒有用到mfc的東西,那到第三步就ok了,重新生成一下就可以了。

因為我裡面用了一些mfc的東西,比如,cstring等,就出現編譯不通過了,這時候把進專案→屬性→配置屬性→常規→專案預設值→mfc的使用→在共享 dll 中使用 mfc,然後把 #include "afx.h「放在stdafx.h裡#include 的上面,這樣就可以了。

5、後來還出現了錯誤

error lnk2005: _dllmain 已經在 dllmain.obj 中定義,參考了部落格:就解決了。

希望對其他人也有幫助。

VS2015 動態鏈結庫 靜態鏈結庫

首先介紹一下靜態庫 靜態鏈結庫 動態庫 動態鏈結庫 的概念,首先兩者都是 共享的方式。靜態庫 在鏈結步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫 的乙份完整拷貝 缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最...

vs2015編譯 pybind 動態庫

本人總結 pyd的檔案 引用 module的名字和 pybind定義的module名字一致,pybind11 module pyiotsdk,m pybind只需要引用標頭檔案即可。根據原文,加上自己的總結 也可以參考 建立visual sdudio 至少2015 win 32 console工程,...

使用vs2015編寫c語言程式

編寫c語言程式的軟體有很多,當年剛開始學c的時候,使用的是vc 6。最近想用vs2015嘗試寫c。以下是使用vs2015編寫c的方法步驟,其中 的代表是某個命令或按鈕功能 1.建立專案,檔案 新建 專案 2.專案型別為 win32控制台應用程式 自己定義專案名稱,確定 3.按照win32應用嚮導完成...