現在、外部のダイナミック リンク ライブラリ (dll) を cmake プロジェクトに追加しようとしています。.dll と .lib ファイルを取得しました。自分で答えを見つけるのに多くの時間を費やしましたが、解決策を見つけることができませんでした。インクルードは機能しますが、最小限のソリューションをコンパイルしようとすると、常にリンク エラーが発生します。CMAKE は、構成および生成中にエラーをスローせず、ライブラリを見つけます。誰かが以前に問題を抱えていて、私のエラーを認識してくれることを願っています
また、次のような独自の検索モジュールを作成します
find_path(LLT_INCLUDE_DIR InterfaceLLT_2.h HINTS ${LLT_DIR})
find_library(LLT_LIBRARY NAMES LLT HINTS ${LLT_DIR} )
set(LLT_LIBRARIES ${LLT_LIBRARY} )
set(LLT_INCLUDE_DIRS ${LLT_INCLUDE_DIR} )
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(LLT DEFAULT_MSG LLT_LIBRARY LLT_INCLUDE_DIR)
mark_as_advanced(LLT_INCLUDE_DIR LLT_LIBRARY )
対応する CMakeLists.txt は次のようになります
PROJECT(TestProg)
cmake_minimum_required(VERSION 2.8)
FIND_PACKAGE(LLT REQUIRED)
INCLUDE_DIRECTORIES(${LLT_INCLUDE_DIR})
SET(TestProg_SOURCES
main.cpp
)
SET(TestProg_HEADERS
)
add_executable(TestProg ${TestProg_SOURCES} ${TestProg_HEADERS})
target_link_libraries(TestProg ${LLT_LIBRARIES} )
これがCMAKE出力です
The C compiler identification is MSVC 16.0.40219.1
The CXX compiler identification is MSVC 16.0.40219.1
Check for working C compiler using: Visual Studio 10
Check for working C compiler using: Visual Studio 10 -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler using: Visual Studio 10
Check for working CXX compiler using: Visual Studio 10 -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Found LLT: C:/XXX/LLT.lib
Configuring done
Generating done
これがコードニペットです。リンクコマンドの意味がよくわかりませんか、コードに何か忘れていましたか?
#include <iostream>
#include "InterfaceLLT_2.h"
using namespace std;
int main()
{
bool bLoadError;
CInterfaceLLT* m_pLLT;
m_pLLT = new CInterfaceLLT("LLT.dll", &bLoadError);
cout << "Hello World!" << endl;
return 0;
}