【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX | 配置文件下载 | 库文件说明 | 配置过程 )
文章目錄
- POSIX 線程局限性
- POSIX 線程配置文件下載及目錄說明
- Windows 動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)
- POSIX 線程配置 ( 項(xiàng)目配置 )
- POSIX 線程配置 ( Windows 動(dòng)態(tài)庫(kù)拷貝 | 注意 32 位庫(kù)拷貝到 SysWOW64 目錄 | 64 位庫(kù)拷貝到 System32 目錄 )
- 配置代碼測(cè)試
POSIX 線程局限性
1. POSIX 線程局限性 : 在 Android , Linux , UNIX , MAC 中可以直接使用 POSIX , Windows 不可以直接使用 ;
2. Windows 配置 POSIX 線程 : 在 Visual Studio 上使用 POSIX 線程 , 需要引入第三方動(dòng)態(tài)庫(kù) ;
POSIX 線程配置文件下載及目錄說明
1. 下載 : POSIX 線程 Windows 配置文件下載地址 :
- ① 下載地址 1 : ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip ;
- ② 下載地址 2 : https://jaist.dl.sourceforge.net/project/pthreads4w/pthreads-w32-2-9-1-release.zip ( 推薦 ) ;
2. Pre-built.2 目錄下的相關(guān)文件說明 :
- ① dll 目錄 : 存放動(dòng)態(tài)庫(kù)目錄 , 其中包含 64位 和 32位 兩種動(dòng)態(tài)庫(kù) ;
下圖是 64 位動(dòng)態(tài)庫(kù) :
下圖是 32 位 動(dòng)態(tài)庫(kù) :
- ② lib 目錄 ; 存放靜態(tài)庫(kù)的目錄 , 該目錄也是同時(shí)包含 64 位 與 32 位 靜態(tài)庫(kù) ;
- ③ include 目錄 : 存放頭文件的目錄 ;
Windows 動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)
動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)文件說明 :
- ① dll 動(dòng)態(tài)庫(kù)文件說明 : 在 Pre-built.2\dll\x64 目錄下 , 是 64 位操作系統(tǒng)的動(dòng)態(tài)庫(kù)文件 , Windows 上的動(dòng)態(tài)庫(kù)是 .dll 文件 , 在 Android , Linux 上的動(dòng)態(tài)庫(kù)是 .so 文件 ;
- ② lib 靜態(tài)庫(kù)文件說明 : 在 Windows 上靜態(tài)庫(kù)有兩種 , 一種只是單純的起到引導(dǎo)作用 , 引導(dǎo)如何去鏈接 dll 動(dòng)態(tài)庫(kù) ; 另一種是直接定義了所有的靜態(tài)函數(shù) ;
POSIX 線程配置 ( 項(xiàng)目配置 )
1. 拷貝文件 : 將 Pre-built.2 目錄下的 include 和 lib 兩個(gè)目錄拷貝到 CMakeLists.txt 所在目錄中 ;
2. CMake 配置 引入頭文件 :
#引入頭文件 include_directories("include")3. CMake 配置 靜態(tài)庫(kù) : 用于引導(dǎo)如何鏈接動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù) , 這里配置自動(dòng)根據(jù)當(dāng)前是 32 位還是 64 位程序 , 確定靜態(tài)庫(kù)的配置目錄 ;
#配置自動(dòng)根據(jù)當(dāng)前是 32 位還是 64 位程序 , 確定靜態(tài)庫(kù)的配置目錄 if(CMAKE_CL_64)set(platform x64) else()set(platform x86) endif() #配置靜態(tài)庫(kù) , 用于引導(dǎo)如何鏈接動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù) link_directories("lib/${platform}")4. CMake 配置鏈接庫(kù) : 鏈接生成的 005_Thread 和線程動(dòng)態(tài)庫(kù) , 線程動(dòng)態(tài)庫(kù)是 lib/x64 下的 pthreadVC2.lib ;
#鏈接生成的 005_Thread 和線程動(dòng)態(tài)庫(kù)名字 # 動(dòng)態(tài)庫(kù)是 lib/x64 下的 pthreadVC2.lib target_link_libraries(005_Thread pthreadVC2)- 5. CMakeLists.txt 配置宏定義 : 在編譯時(shí)會(huì)出現(xiàn) " “timespec”:“struct” 類型重定義 " 報(bào)錯(cuò)信息 , 需要配置宏定義信息 ;
6. 完整的 CMakeLists.txt 配置 :
# CMakeList.txt: 005_Thread 的 CMake 項(xiàng)目,在此處包括源代碼并定義 # 項(xiàng)目特定的邏輯。 # cmake_minimum_required (VERSION 3.8)#引入頭文件 include_directories("include")#配置自動(dòng)根據(jù)當(dāng)前是 32 位還是 64 位程序 , 確定靜態(tài)庫(kù)的配置目錄 if(CMAKE_CL_64)set(platform x64) else()set(platform x86) endif() #配置靜態(tài)庫(kù) , 用于引導(dǎo)如何鏈接動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù) link_directories("lib/${platform}")#處理 “timespec”:“struct” 類型重定義 報(bào)錯(cuò)信息 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_STRUCT_TIMESPEC")# 將源代碼添加到此項(xiàng)目的可執(zhí)行文件。 add_executable (005_Thread "005_Thread.cpp" "005_Thread.h")#鏈接生成的 005_Thread 和線程動(dòng)態(tài)庫(kù)名字 # 動(dòng)態(tài)庫(kù)是 lib/x64 下的 pthreadVC2.lib target_link_libraries(005_Thread pthreadVC2)# TODO: 如有需要,請(qǐng)?zhí)砑訙y(cè)試并安裝目標(biāo)。上面的內(nèi)容是項(xiàng)目配置內(nèi)容, 下面是 Windows 系統(tǒng)配置內(nèi)容 ;
POSIX 線程配置 ( Windows 動(dòng)態(tài)庫(kù)拷貝 | 注意 32 位庫(kù)拷貝到 SysWOW64 目錄 | 64 位庫(kù)拷貝到 System32 目錄 )
拷貝 .dll 動(dòng)態(tài)庫(kù)到 Windows 系統(tǒng)中 , 如果 Windows 系統(tǒng)中沒有對(duì)應(yīng)的動(dòng)態(tài)庫(kù) , 運(yùn)行時(shí)會(huì)報(bào)錯(cuò) ;
1. 64 位的 .dll 動(dòng)態(tài)庫(kù) : 將 Pre-built.2\dll\x64 目錄下的兩個(gè) 64 位 .dll 動(dòng)態(tài)庫(kù) ( pthreadGC2.dll 和 pthreadVC2.dll ) 拷貝到 C:\Windows\System32 目錄中 ;
- ① Pre-built.2\dll\x64 下的 動(dòng)態(tài)庫(kù) :
- ② 拷貝到 C:\Windows\System32后的動(dòng)態(tài)庫(kù) :
2. 32 位的 .dll 動(dòng)態(tài)庫(kù) : 將 Pre-built.2\dll\x86 目錄下的 5 個(gè) 32 位 .dll 動(dòng)態(tài)庫(kù) ( pthreadGC2.dll , pthreadGCE2.dll , pthreadVC2.dll , pthreadVCE2.dll , pthreadVSE2.dll ) 拷貝到 C:\Windows\SysWOW64 目錄中 ;
- ① 32 位 .dll 動(dòng)態(tài)庫(kù) :
- ② 拷貝 32 位 動(dòng)態(tài)庫(kù) : 將 32 位動(dòng)態(tài)庫(kù)拷貝到 C:\Windows\SysWOW64 目錄下 ;
配置代碼測(cè)試
線程使用代碼 :
// 005_Thread.cpp: 定義應(yīng)用程序的入口點(diǎn)。 //#include "005_Thread.h" #include <pthread.h>using namespace std;int main() {cout << "Hello CMake。" << endl;//測(cè)試 POSIX 線程方法pthread_self();return 0; }CMake 配置文件 :
# CMakeList.txt: 005_Thread 的 CMake 項(xiàng)目,在此處包括源代碼并定義 # 項(xiàng)目特定的邏輯。 # cmake_minimum_required (VERSION 3.8)#引入頭文件 include_directories("include")#配置自動(dòng)根據(jù)當(dāng)前是 32 位還是 64 位程序 , 確定靜態(tài)庫(kù)的配置目錄 if(CMAKE_CL_64)set(platform x64) else()set(platform x86) endif() #配置靜態(tài)庫(kù) , 用于引導(dǎo)如何鏈接動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù) link_directories("lib/${platform}")#處理 “timespec”:“struct” 類型重定義 報(bào)錯(cuò)信息 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_STRUCT_TIMESPEC")# 將源代碼添加到此項(xiàng)目的可執(zhí)行文件。 add_executable (005_Thread "005_Thread.cpp" "005_Thread.h")#鏈接生成的 005_Thread 和線程動(dòng)態(tài)庫(kù)名字 # 動(dòng)態(tài)庫(kù)是 lib/x64 下的 pthreadVC2.lib target_link_libraries(005_Thread pthreadVC2)# TODO: 如有需要,請(qǐng)?zhí)砑訙y(cè)試并安裝目標(biāo)。運(yùn)行結(jié)果 :
總結(jié)
以上是生活随笔為你收集整理的【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX | 配置文件下载 | 库文件说明 | 配置过程 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++ 语言】文件操作 ( fopen
- 下一篇: 【C++ 语言】线程 ( 线程创建方法