關於前面的怎麼建立乙個dll,請參考這篇部落格。
寫的挺詳細的。
我把pch.**件貼在這裡,裡面做了詳細的注釋
// pch.h: 這是預編譯標標頭檔案。
// 下方列出的檔案僅編譯一次,提高了將來生成的生成效能。
// 這還將影響 intellisense 效能,包括**完成和許多**瀏覽功能。
// 但是,如果此處列出的檔案中的任何乙個在生成之間有更新,它們全部都將被重新編譯。
// 請勿在此處新增要頻繁更新的檔案,這將使得效能優勢無效。
#ifndef pch_h
//ifndef的意思是如果pch_h未定義,則執行else前面的。
#define pch_h
// 新增要在此處預編譯的標頭
#include
"framework.h"
#include
#endif
//pch_h
#pragma warning(disable:4996)
#ifdef import_dll
//ifdef的意思是如果import_dll已經定義過了,則執行else前面的,如果未定義,則執行else後面的。
#else
#define import_dll extern "c" _declspec(dllexport)
//指的是允許將其給外部呼叫
//這裡 _declspec是關鍵字,
#endif
//建立鏈結
import_dll void
init_mysocketimpl
(void
** handle)
;//傳送資料
import_dll void
senddata_mysocketimpl
(void
* handle,
const
char
* senddata,
int sendlen)
;//接收資料
import_dll void
recevdata_mysocketimpl
(void
* handle,
char
* recevdata,
int* recevlen)
;//關閉
import_dll void
close_mysocketimpl
(void
* handle)
;
然後在pch.cpp檔案裡面具體實現這四個函式。接著生成解決方案,然後在debug檔案裡面找打.dll檔案,複製。
這裡是呼叫dll的檔案。
#include
#include
#include
"windows.h"
intmain()
;int len =
strlen
(buf)
; send =
(senddata_mysocket)
getprocaddress
(hdllinst,
"senddata_mysocketimpl");
//getprocaddress為獲取該函式的位址
send
(conn, buf, len)
;//接收資料
char recevbuf[
1024]=
;int recevlen =0;
recev =
(recevdata_mysocket)
getprocaddress
(hdllinst,
"recevdata_mysocketimpl");
//getprocaddress為獲取該函式的位址
recev
(conn, recevbuf,
&recevlen)
;printf
("接收到的資料是:%s\n"
, recevbuf)
;printf
("接收到的資料長度是:%d\n"
, recevlen)
;//關閉
close =
(close_mysocket)
getprocaddress
(hdllinst,
"close_mysocketimpl");
close
(conn)
;return0;
}
在這裡,先把**寫好,然後生成解決方案,之後把.dll檔案複製到它的debug檔案下就可以了,輸出正確。我把專案資料夾附在後面。 vs2019製作動態鏈結庫 dll到指定目錄
製作dll 1.新建專案 動態鏈結庫 dll 2.指定名稱和位置,建立 3.新增自己寫好的test.cpp和test.件 4.test.cpp檔案最前面包含 include pch.h 5.test.件中宣告的函式或類前加 declspec dllexport 放在型別前後都可以如 class de...
vs2019建立動態庫
1.記住生成的動態庫是x64還是x86,必須與使用它的平台相對應 2.extern c declspec dllexport void function 其中extern c 的作用是告訴編譯器將被它修飾的 按c語言的方式進行編譯。declspec dllexport 需要在生成動態庫的專案中使用,...
VS2019 實用設定
本文記錄了 vs2019 預覽版使用過程中的一些設定,這些設定也同樣適用於 vs2017,我們可以根據個人的實際情況進行修改。將滾動條設定為map mode後,則該區域會顯示當前整個檔案的縮略示圖,能夠以不同的顏色顯示當前檔案中的修改狀態 錯誤 警告等資訊,便於對當前檔案有個全域性的認識。在 vs2...