日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++动态链接库及静态链接库的生成与使用

發布時間:2025/3/18 c/c++ 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++动态链接库及静态链接库的生成与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c++動態鏈接庫及靜態鏈接庫的生成與使用

1,新建控制臺工程xdltest,改屬性-配置屬性-常規-配置類型為 動態庫.dll或靜態庫.lib
2,打開工程后添加 dltest.h, dltest.cpp,其中.h與.cpp名字沒必要一樣
3,編寫代碼
----------------------------------------------
--dltest.h
#pragma once
_declspec(dllexport) void Print(const char* str);

----------------------------------------------
--dltest.cpp
#include<iostream>
#include"dltest.h"
void Print(const char* str)
{
std::cout << "dltest>> " << str << std::endl;
}

4,編譯,生成 <庫的名字是根據工程名生成的>
若是靜態庫,則會生成 xdltest.lib.
若是動態鏈接庫則生成 xdltest.lib 和 xdltest.dll

5,使用
(1)將xdltest.lib添加到 <屬性-配置屬性-鏈接器-輸入-附加依賴項>
(2)在<屬性-配置屬性-鏈接器-常規-附加庫目錄>中指定xdltest.lib的目錄
(3)在<屬性-配置屬性-c/c++-常規-附加包含目錄>中指定dltest.h的目錄
(4)在程序中 #include "dltest.h" 后即可使用Print("hello")輸出了

下面有三種方式使用庫函數
-----------------------------------------
--使用方式一
#include "stdafx.h"
#include "abc.h" //包含庫的頭文件

int main()
{
Print("hello,world");
return 0;
}
-----------------------------------------
--使用方式二
#include "stdafx.h"
void Print(const char* str); //聲明庫中的函數,使編譯通過

int main()
{
Print("hello,world");
return 0;
}
-----------------------------------------
--使用方式三
#include "stdafx.h"
_declspec(dllimport) void Print(const char* str); //從庫中導入進工程

int main()
{
Print("hello,world");
return 0;
}
6,運行
若是動態鏈接庫則必須把dll文件拷到exe目錄下才能運行

原理:
.h文件用于編譯,使程序在語法上檢測通過,利用這個原理,
可以不使用.h文件而直接將需要使用的庫函數在使用前聲明出來
.lib文件用于鏈接,若是靜態鏈接庫,直接將函數實現寫入了exe中,
若是動態鏈接則是在exe中留下函數簽名并標記它是運行時動態加載的

------------------------------------------------------------------------------------------------------

需要注意的是:

1,C#只能調用 C/C++的DLL,而不能調用lib,

2,C++生成的DLL中,函數名被改了(各編譯器而不同),而C#調用C++ DLL時需要指定函數名字,因此會出錯,找不到函數

對應方法是:生成C風格的DLL,它的函數是沒改名字的。

C風格的DLL中函數聲明加上 exterun "C",如:

?exterun "C"?_declspec(dllexport) void Print(const char* str);

?

posted on 2018-07-27 18:45 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的c++动态链接库及静态链接库的生成与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。