Dll 尝试将外部库包含到CMAKE项目时发生链接错误
我目前正在尝试将外部动态链接库(dll)添加到我的cmake项目中。我有.dll和.lib文件。我花了很多时间自己寻找答案,但没有找到解决办法。include可以工作,但当我试图编译最小解时,总是会出现链接错误。CMAKE在配置和生成时不会抛出错误,并会查找库。我希望以前有人遇到过这个问题,并认识到我的错误 我还构建了自己的find模块,如下所示Dll 尝试将外部库包含到CMAKE项目时发生链接错误,dll,cmake,Dll,Cmake,我目前正在尝试将外部动态链接库(dll)添加到我的cmake项目中。我有.dll和.lib文件。我花了很多时间自己寻找答案,但没有找到解决办法。include可以工作,但当我试图编译最小解时,总是会出现链接错误。CMAKE在配置和生成时不会抛出错误,并会查找库。我希望以前有人遇到过这个问题,并认识到我的错误 我还构建了自己的find模块,如下所示 find_path(LLT_INCLUDE_DIR InterfaceLLT_2.h HINTS ${LLT_DIR}) find_library(
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
这是代码片段。我真的不知道使用link命令意味着什么,或者我在代码中忘记了什么
#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;
}
#包括
#包括“接口单元2.h”
使用名称空间std;
int main()
{
布尔·布劳德罗;
CInterfaceLLT*m_pLLT;
m_pLLT=new CInterfaceLLT(“LLT.dll”和&bLoadError);
你能告诉我们你构建时执行的最终链接命令吗?谢谢你的回复。出于可读性的原因,我在额外的回复中添加了代码。StackOverflow不是这样工作的。你不应该用问题的第二部分来回答你的问题。请编辑你的帖子,将完整的问题放在问题部分我解决了这个问题。我不是一个动态链接库,而是一个C函数库,我必须自己在项目中加载。