今天研究如何生成動態鏈接庫.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文件了。項目太大,生成時間太長,自己最好新建一個小項目試試行不行。