vs 2017 靜態庫 動態庫 的初步使用

靜態庫的初步使用

  1. 新建 靜態庫 項目 Lib1
    會產生 sln文件與vcproj文件,vcproj是工程文件,sln是解決方案文件
    一個解決方案可以有多個工程
    在頭文件(Lib1.h)寫函數聲明,在cpp文件定義函數實現
    這時候右鍵點擊項目 ->生成, 會產生 Lib1.lib 的靜態庫文件
  2. 使用這個靜態庫文件
    新建一個控制臺項目
    a)在主函數cpp文件里面 通過#include “相對路徑\Lib1.h” 將函數聲明引用過來
    b)引用第一步生成的靜態庫文件
    右鍵項目 -> 屬性 ->配置屬性 ->鏈接器->常規->附加庫目錄 將第一步生成的Lib1.lib文件所在的目錄添加上(可以是相對路徑)
    右鍵項目 -> 屬性 ->配置屬性 ->鏈接器-> 輸入->附加依賴項 填寫上靜態庫文件的名字 Lib1.lib(這一步也可以通過代碼來完成
#pragma comment(lib, "Lib1.lib")

這個時候就可以正常使用這個靜態庫提供的函數了

動態庫的初步使用

  1. 用vs新建一個動態庫項目 fouroperations,
    會出現 dllmain.cpp這個文件內容如下:
// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;
}

再創建要對外提供的 頭文件 與 源文件
fouroperations.h

#pragma onceclass FourOperations {
public:__declspec(dllexport) FourOperations();__declspec(dllexport) ~FourOperations(); static __declspec(dllexport) double add(double a, double b);//加法static __declspec(dllexport) double sub(double a, double b);//減法static __declspec(dllexport) double mul(double a, double b);//乘法static __declspec(dllexport) double div(double a, double b);//除法__declspec(dllexport) void print();
};

fouroperations.cpp

// fouroperations.cpp : 定義 DLL 應用程序的導出函數。
//#include "stdafx.h"
#include "fouroperations.h"
#include "iostream"
using namespace std;FourOperations::FourOperations() {}FourOperations::~FourOperations() {}double FourOperations::add(double a, double b) {return a + b;
}
double FourOperations::sub(double a, double b) {return a - b;
}
double FourOperations::mul(double a, double b) {return a * b;
}
double FourOperations::div(double a, double b) {return a / b;
}
void FourOperations::print() {cout << "this is fouroperations.cpp" <<endl;
}

這時候右鍵項目,點擊生成會生成dll文件,發布的話,就需要
頭文件 fouroperations.h 與 fouroperations.lib 與 fouroperations.dll
在這里插入圖片描述
2. 使用這個動態庫文件
新建一個項目,右鍵項目屬性->配置屬性->c/c+±>常規->附加包含目錄(把動態庫文件的 fouroperations.h 添加進去 )
右鍵項目屬性->配置屬性->鏈接器->常規->附加庫目錄(填寫fouroperations.lib 所在的路徑)
右鍵項目屬性->配置屬性->鏈接器->輸入->附加依賴項(填寫fouroperations.lib )

這樣就可以正常使用這個動態庫文件了

另外關于 linux下,如果出現 靜態庫 使用了動態庫, 而我們又要使用這個靜態庫的 情景:
參考https://www.cnblogs.com/fnlingnzb-learner/p/8119729.html
非常詳細

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言貪吃蛇

擴展功能實現 加速減速計分鏈表實現彩色界面暫停 開源代碼 貪吃蛇 動圖展示&#xff0c;&#xff08;加載比較慢&#xff09;

C++ 讀取windows服務列表 與操作注冊表

讀取服務列表 https://www.cnblogs.com/Leo-Forest/archive/2013/05/03/3056569.html 操作注冊表 https://blog.csdn.net/yanchenyu365/article/details/84840908

Python練手項目

python3學習筆記《目錄》 PyCharm和git安裝教程 git入門教程 python3學習筆記 Mooc學習Python3筆記 python3字符串處理&#xff0c;高效切片 三國演義人物出場統計 統計哈姆雷特文本中高頻詞的個數 python3制作動態二維碼 python的文件操作 簡單的爬蟲筆記 爬蟲實戰項…

windows C++ 通過WMI獲取底層信息

參考 可以通過修改參數來獲取相應的信息 https://www.cnblogs.com/hjbf/p/10775112.html https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-operatingsystem?redirectedfromMSDN

知網畢業論文爬取

知網論文 查找文獻的時候每次只顯示10頁二次檢索功能又還沒有&#xff08;不知道是不是我沒找到&#xff09;。干脆用爬蟲把所有和自己論文關鍵字相關的文獻題目都爬取下來&#xff0c;然后自己做一個小的檢索表。 開源項目 https://github.com/hodgekou/CNKICrawler.git 配…

go語言 函數相關1:實參到形參的傳遞永遠是值拷貝

相關知識點 a. 函數實參到形參的傳遞永遠是值拷貝 b. 函數參數 支持不定長參數,不定參數名在函數體 內相當于切片&#xff0c;對切片的操作同樣適合對不定參數的操作 c. 切片是引用類型&#xff0c;值包含指向數組的指針 func test1(s ...int) { // s為不定長參數s[0] 888 }…

git 初步使用01

git工作流程 git的安裝 1&#xff09;安裝git 2&#xff09;安裝烏龜 3&#xff09;漢化烏龜創建本地倉庫 在一個空目錄&#xff0c;打開git bash here&#xff0c; 輸入命令 git init 刪除并保留本地副本 選中目標文件&#xff0c;右鍵烏龜&#xff0c;刪除并保留本地副本 這…

net-tools和ifconfig

文章目錄歷史關系兩者使用對比一、顯示所有已連接的網絡接口二、激活或停用網絡接口三、為網絡接口分配IPv4地址四、移除網絡接口的IPv4地址五、顯示網絡接口的IPv4地址六、為網絡接口分配IPv6地址七、顯示網絡接口的IPv6地址八、移除網絡設備的IPv6地址九、改變網絡接口的MAC地…

go語言在windows編譯在linux上運行的可執行程序

package mainimport ("fmt""os""os/exec" )//filepath: 要編譯的文件的路徑 func build(filepath string){_ os.Setenv("CGO_ENABLED", "0")_ os.Setenv("GOARCH", "amd64")_ os.Setenv("GOOS&…

Django無法顯示圖片

首先注意的一點是&#xff0c;Django沒有根目錄的這個說法&#xff0c;所以下載下來的html文件沒有辦法直接使用&#xff0c;必須進行修改路徑&#xff0c;特別是圖片引用的路徑&#xff0c;需要進行修改。 路徑不對 源碼 {% load staticfiles %} <img src"{% stati…

go語言函數相關

函數類型 函數類型也叫作函數簽名&#xff0c; 就是函數定義首行去掉函數名、參數名和&#xff5b;&#xff0c;可以使用fmt.Printf 的”%T”格式化參數打印函數的類型。 可以使用 type 定義函數類型&#xff0c;函數類型變量可以作為函數的參數或返回值。 實際函數類型變量和…

go語言如何連接數據庫

文章目錄安裝驅動連接數據庫查詢表結果插入結果刪除結果安裝驅動 go get github.com/go-sql-driver/mysqlimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )連接數據庫 //用戶名&#xff1a;密碼^tcp(地址:3306)/數據庫db, err…

在windows下,編譯可訪問https的libcurl靜態庫過程

1. 首先編譯openssl靜態庫 整個過程用的是 vs2015命令提示工具 需要安裝perl 下載地址&#xff1a;添加鏈接描述 解壓后&#xff0c; 在 openssl-1.0.2e目錄下創建develop這個文件夾&#xff0c; cd到 openssl-1.0.2e目錄下&#xff0c; a.配置編譯文件和模式 執行 perl Co…

Go語言爬蟲項目將結果寫入MySql數據庫

來源于Google資深工程師深度講解Go語言 package mainimport ("fmt""io/ioutil""net/http" )const url "http://www.zhenai.com/zhenghun"func main() {//發送get請求resp, err : http.Get(url)if err ! nil {panic(err)}//關閉通道d…

go語言學習路徑

個人記錄 go語言如何連接數據庫&#xff1a;增刪改查 Go語言爬蟲項目將結果寫入MySql數據庫 go語言急速入門

在windows上使用go編譯dll文件,供C++調用

C項目是win32的&#xff0c;所以go的編譯環境也要改成win32的 cmd下&#xff0c;修改環境變量&#xff1a; set GOARCH386 set CGO_ENABLED1 使用go env 查看是否生效參考&#xff1a;https://bbs.csdn.net/topics/394513992. 2. 安裝編譯環境 MinGW下載安裝gcc,g編譯器 參考&…

go語言急速入門

Go 語言極速入門1 - 環境搭建與最簡姿勢 Go 語言極速入門2 - 基礎語法 Go 語言極速入門3 - 內建容器 Go 語言極速入門4 - 面向對象 Go 語言極速入門5 - 面向接口 Go 語言極速入門6 - 閉包 Go 語言極速入門7 - 資源管理與錯誤處理 Go 語言極速入門8 - Goroutine Go 語言極速入門…

windows遠程桌面mstsc使用 代理

轉自 https://blog.csdn.net/bodybo/article/details/6638005

go語言掃描四位數可用域名

域名注冊查詢接口(API)的說明 原文出處 域名查詢 接口采用HTTP&#xff0c;POST&#xff0c;GET協議&#xff1a; 調用URL&#xff1a;http://panda.www.net.cn/cgi-bin/check.cgi 參數名稱&#xff1a;area_domain 值為標準域名&#xff0c;例&#xff1a;hichina.com 調用…