2016-04-09 8 views
1

Ich verwende Clion, die MinGW und Cmake verwendet. Wenn ich versuche, die Standalone asio Bibliothek verwenden Ich erhalteWie ws2_32 in Clion verbinden

undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
... 

Ich glaube, ich die C:/Windows/System32/ws2_32.dll Bibliothek zu verbinden haben. Ich habe versucht, etwas wie -L C:/Windows/System32 -lws2_32 hinzuzufügen:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -static -lws2_32") 

Aber das hat nicht geholfen. Wie kann ich diese Fehler beheben?

+0

Sie brauchen nicht '-L C:/Windows/System32' weil mingw bereits diese Bibliothek hat darin Verteilung ist. Wie auch immer, mingw kann nicht gegen '.dll's, nur' .a's (und vielleicht '.lib's) verlinken. – HolyBlackCat

+0

Ich denke, das Problem ist, dass Sie '-lws2_32' in die falsche Variable setzen, muss es in' CMAKE_EXE_LINKER_FLAGS' sein. – HolyBlackCat

+0

@HolyBlackCat Wo finde ich die '.lib' oder' .a' Dateien? – dimitris93

Antwort

2

Die folgende CMakeLists.txt kompiliert fehlerfrei. Nur noch 1 Zeile ist wirklich erforderlich: link_libraries(ws2_32 wsock32)

cmake_minimum_required(VERSION 3.3) 
project(server_client) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -s -O3 -I C:/Users/Shiro/Desktop/asio-1.10.6/include") 
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -static") 
link_libraries(ws2_32 wsock32) 


set(SOURCE_FILES chat_server.cpp) 
add_executable(server_client ${SOURCE_FILES})