尽管我对C++非常陌生,但我还是通过这个项目向Python公开了一个旧的C++库,我正在使用Pybind11和CMake。C++库链接到一个名为"problematic_old_library.lib“的文件。此.lib位于服务器驱动器上。当将C++代码绑定到CMakeList.txt时,需要一个包含和链接到所需文件的CMakeList.txt文件。因为我没有CMake的经验,所以我很确定我在这里做错了什么。
下面是我的CMakeList.txt文件以供参考(文件的名称被更改):
cmake_minimum_required(VERSION 2.8.12)
project(some_project)
add_subdirectory(pybind11)
pybind11_add_module(some_project
src/main.cpp
src/mapping.cpp
)
link_directories(Z:/folder/subfolder/lib)
TARGET_LINK_LIBRARIES(some_project PUBLIC problematic_old_library)
现在,这个CMakeList.txt包含在一个名为"some_project“的文件夹中。文件夹"some_project“是"CMakeList.txt”,文件夹名为"src"(上面列出了两个文件),.The文件"mapping.cpp“使用名为"problematic_old_library”的第三方库。然而,这会产生一个致命错误。
LINK: fatal error LNK1181: cannot open input file 'problematic_old_library.lib'
是什么引起的?
我试着从文档中寻求帮助。然而,当使用CMake时,我发现理解${某某}表示法是非常令人困惑的。我想要的是“硬编码”示例,说明如何链接到一个旧库,如果可能的话,最好不要使用${某某}符号。
/
下面要进一步参考的是我的CMakeList.txt文件的附加版本,它包含导致这个问题的"x.lib“文件的路径的所有组合:
make_minimum_required(VERSION 2.8.12)
project(blpbind)
add_subdirectory(pybind11)
pybind11_add_module(blpbind src/main.cpp
src/mapping.cpp
)
# Cannot open
#link_directories("Z:\\blpapi_cpp\\lib")
# Cannot open
#link_directories("Z://blpapi_cpp//lib")
# Cannot open
#link_directories(Z:\\blpapi_cpp\\lib)
# Cannot open
#link_directories(Z://blpapi_cpp//lib)
# Cannot open
#link_directories(Z:/blpapi_cpp/lib)
# Cannot open
#link_directories(Z:/ILMAPI/lib/PROD/LATEST/src/alphalib/blpbind/src/lib)
# Cannot open
#link_directories("Z:/ILMAPI/lib/PROD/LATEST/src/alphalib/blpbind/src/lib")
# Cannot open
link_directories(Z://ILMAPI//lib//PROD//LATEST//src//alphalib//blpbind//src//lib)
# Cannot open
link_directories("Z://ILMAPI//lib//PROD//LATEST//src//alphalib//blpbind//src//lib")
TARGET_LINK_LIBRARIES(blpbind PUBLIC blpapi3_32)
我尝试了以下所有的方法,并确认在每种情况下我仍然收到完全相同的错误。
Br和感谢
发布于 2017-09-16 11:03:27
当找不到文件时,似乎出现了LNK1181错误(https://msdn.microsoft.com/en-us/library/y6b12xkc.aspx)
也许你的路径中有空格。当您使用空格时,您必须像用\
那样转义它们
路径Z:/folder with space name/subfolder/lib
应该是这样的:
Z:/folder\ with\ space\ name/subfolder/lib
在另一边,您似乎可以对文件夹使用double \,如下所示:
"Z:\\folder with space name\\subfolder\\lib"
试着同时看到结果
https://stackoverflow.com/questions/46252663
复制相似问题