Clion生成動態鏈接庫.dll

今天研究如何生成動態鏈接庫.dll文件糾結了好久。在保證代碼文件不報錯的情況下,可能要注意幾個方面。
一·項目結構要完整。
Clion項目生成後會和其他編程工具不同的地方在於會有一個CMakelist文件和cmake-build-debug文件夾。
如果沒有Cmakelist可以使用importProject重新導入項目:https://blog.csdn.net/superSmart_Dong/article/details/98982679
如果編譯不通過,在代碼保證正確的情況下設置Setting->Build,Execution,Deployment->Cmake->Generation Path ,設置選中爲你的cmake-build-debug。
二.編寫好Cmakelist文件。
在代碼確保沒報錯的前提下,只要寫好Cmakelist文件就可以進行Build,生成鏈接庫了。
add_library(DEMOProject SHARED Afile.cpp Afile.hpp)有這句話就能夠生成出dll動態鏈接庫了

add_library(<name> [STATIC | SHARED | MODULE]
            [EXCLUDE_FROM_ALL]
            [source1] [source2] [...])
該指令的主要作用就是將指定的源文件生成鏈接文件,然後添加到工程中去,[STATIC | SHARED | MODULE]指定生成鏈接庫的類型,指定STATIC,SHARED,或者MODULE參數用來指定要創建的庫的類型。STATIC庫是目標文件的歸檔文件,在鏈接其它目標的時候使用。如果什麼都不寫那麼就會生成.a文件,也就是Linux的靜態鏈接庫文件。

add_executable(DEMOProject Afile.cpp Afile.hpp)這是添加可執行文件的,如果把add_libarary寫成這個命令,而你寫的代碼中也沒有WinMain則會報找不到Winmain,編譯出來的文件也不是鏈接庫文件。會報類似下面的錯誤。

undefined reference to 'Winmain' DemoProject.exe:error:Id return 1 exit status
make[2]: *** [test_cpu] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/test.dir/all' failed
make[1]: *** [CMakeFiles/test.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

總結:Clion生成動態鏈接庫.dll文件,確保CMakelist文件和cmake-build-debug正確,然後確保add_library正確,類型爲SHARED,之後Run->build,就慢慢等,build完了一般就會在cmake-build-debug文件夾下生成.dll文件了。項目太大,生成時間太長,自己最好新建一個小項目試試行不行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章