LNK1104尝试与boost_filesystem * .lib链接时

重装

我正在使用CMake使用一些Boost库创建跨平台项目。我已经使用以下命令来创建库。

.\b2.exe --prefix=C:/Boost install --with-python --with-system --with-filesystem address-model=32 toolset=msvc-12.0 link=shared threading=multi --layout=tagged --build-type=complete

该项目可以很好地与python和系统库链接,但是当它尝试与文件系统库链接时,它将失败。它正在寻找“ libboost_filesystem * .lib”(不存在),然后毫无问题地使用“ boost_python * .lib”和“ boost_system * .lib”文件。

我的顶级CMakeLists.txt如下:

file(GLOB SOURCES src/*.cpp)

add_subdirectory(shape)
add_subdirectory(py_shape)

#define sources and executable
set(EXECUTABLE_NAME "renderer2d")
add_executable(${EXECUTABLE_NAME} ${SOURCES})

#find python
find_package(PythonInterp)
find_package(PythonLibs 2.7 REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})

#detect and add SFML
#this line checks a cmake file for hints on where to find cmake
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules"     ${CMAKE_MODULE_PATH})
#find any version 2.x of SFML
#see the FindSFML.cmake file for additional details and instructions
find_package(SFML 2 REQUIRED system window graphics network audio)
include_directories(${SFML_INCLUDE_DIR})

#find and include Boost python libraries
set(Boost_USE_STATIC_LIBS OFF)
find_package(Boost COMPONENTS python system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIR})

#link all found libraries to the executable
target_link_libraries(${EXECUTABLE_NAME} ${PYTHON_LIBRARIES}     ${SFML_LIBRARIES} ${Boost_LIBRARIES} shape)

#install target
install(TARGETS ${EXECUTABLE_NAME} DESTINATION bin)

和我这个exe文件的唯一源文件:

#include <iostream>
#include <SFML/Graphics.hpp>
#include "../shape/inc/Shape.hpp"
#include <boost/python.hpp>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::python;
using namespace boost::filesystem;

int main(int argc, char* argv[])
{
  try
  {
    Py_Initialize();

    //need to insert working directory into path
    path working_directory = absolute("./").normalize();
    PyObject* sys_path = PySys_GetObject("path");
    PyList_Insert(sys_path, 0,     PyString_FromString(working_directory.string().c_str()));

    sf::RenderWindow window(sf::VideoMode(800, 600), "renderer2d");
    Shape shape;
    shape.Initialize();

    while(window.isOpen())
    {
      sf::Event event;
      while(window.pollEvent(event))
      {
        if(event.type == sf::Event::Closed)
          window.close();
        if(event.type == sf::Event::KeyPressed)
        {
          if(event.key.code == sf::Keyboard::Q)
            window.close(); 
          else if(event.key.code == sf::Keyboard::U)
            shape.Update();
          else if(event.key.code == sf::Keyboard::S)
            shape.SetGreen(255);
        }
      }

      window.clear();
      window.draw(*shape.GetShape());
      window.display();
    }
  } catch(error_already_set){PyErr_Print();}

  return 0;
}

那么,为什么要尝试链接“ libboost_filesystem”而不是“ boost_filesystem”呢?

弗雷泽

这里的问题是Boost具有自动链接功能,如果您不使用CMake,该功能将非常有用。

要禁用此功能,您只需应用一个预处理程序定义,如Boost.Config文档中的表格所示

BOOST_ALL_NO_LIB:告诉配置系统不要自动选择要链接的库。通常,如果编译器支持#pragma lib,则只需选择包含该库头之一的行为,即可自动选择并链接正确的库构建变体。此宏关闭该功能。

要通过CMake添加预处理器定义,可以使用以下target_compile_definitions命令。例如,如果要将定义限制为仅使用MSVC编译器,则可以使用生成器表达式

target_compile_definitions(${EXECUTABLE_NAME} PRIVATE $<$<BOOL:${MSVC}>:BOOST_ALL_NO_LIB>)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

链接:致命错误LNK1104:无法打开文件python27.lib

来自分类Dev

链接:致命错误LNK1104:无法打开文件'SDL.lib'

来自分类Dev

链接:致命错误LNK1104:无法打开文件'fltkd.lib'

来自分类Dev

不断收到“错误LNK1104:无法打开文件'boost_thread-vc100-mt-gd-1_41.lib”

来自分类Dev

LNK1104:无法打开文件pthreadsVC2.lib

来自分类Dev

LNK1104:无法打开文件pthreadsVC2.lib

来自分类Dev

错误LNK1104无法打开文件'gtest.lib'

来自分类Dev

构建 Rhapsody 7.6.1 组件时出现 LNK1104 错误

来自分类Dev

Boost.Python和错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'

来自分类Dev

链接:致命错误LNK1104:无法打开文件'opencv_calib3d245d.lib'(OpenCV 2.4.9)

来自分类Dev

异常的VS2010链接错误LNK1104:无法打开文件'libssh2d.lib'

来自分类Dev

链接:致命错误LNK1104:无法打开文件'opencv_calib3d245d.lib'(OpenCV 2.4.9)

来自分类Dev

将静态boost_filesystem库与Qt Creator链接时出错

来自分类Dev

链接:致命错误LNK1104:手动配置LIB环境变量后无法打开文件'libcpmt.lib'

来自分类Dev

致命错误LNK1104:无法打开文件'MSVCRT.lib'

来自分类Dev

为什么我收到错误LNK1104:无法打开文件'glew32.lib'

来自分类Dev

无法构建PortAudio-“ LNK1104:无法打开文件'ksguid.lib'”

来自分类Dev

致命错误LNK1104:无法打开文件'gdi32.lib'

来自分类Dev

LNK1104无法打开文件libboost_random-vc140-mt-1_61.lib等

来自分类Dev

抑制状态错误 LNK1104 无法打开文件“IlmImfd.lib”

来自分类Dev

Visual C++:链接:致命错误 LNK1104:无法打开文件“libboost_system-vc120-mt-gd-1_55.lib”

来自分类Dev

可视c ++,链接:致命错误LNK1104:无法打开文件

来自分类Dev

OpenCV错误:“ LINK:致命错误LNK1104:无法打开文件'opencv_core231d.lib'”

来自分类Dev

错误LNK1104:无法打开文件'libboost_thread-vc100-mt-gd-1_55.lib'

来自分类Dev

OpenCV错误:“ LINK:致命错误LNK1104:无法打开文件'opencv_core231d.lib'”

来自分类Dev

Portaudio错误“ LNK1104:无法打开文件'ksguid.lib'”文件不在我的计算机上吗?

来自分类Dev

VS2015 - LNK1104 无法打开文件 'C:\gstreamer\1.0\x86_64\lib\glib-2.0'

来自分类Dev

使用boost :: filesystem时无法链接

来自分类Dev

Visual Studio错误:LNK1104:无法打开文件'kernel32.lib'-仅在WP8项目/ Win32构建中

Related 相关文章

  1. 1

    链接:致命错误LNK1104:无法打开文件python27.lib

  2. 2

    链接:致命错误LNK1104:无法打开文件'SDL.lib'

  3. 3

    链接:致命错误LNK1104:无法打开文件'fltkd.lib'

  4. 4

    不断收到“错误LNK1104:无法打开文件'boost_thread-vc100-mt-gd-1_41.lib”

  5. 5

    LNK1104:无法打开文件pthreadsVC2.lib

  6. 6

    LNK1104:无法打开文件pthreadsVC2.lib

  7. 7

    错误LNK1104无法打开文件'gtest.lib'

  8. 8

    构建 Rhapsody 7.6.1 组件时出现 LNK1104 错误

  9. 9

    Boost.Python和错误LNK1104:无法打开文件'boost_python-vc100-mt-gd-1_55.lib'

  10. 10

    链接:致命错误LNK1104:无法打开文件'opencv_calib3d245d.lib'(OpenCV 2.4.9)

  11. 11

    异常的VS2010链接错误LNK1104:无法打开文件'libssh2d.lib'

  12. 12

    链接:致命错误LNK1104:无法打开文件'opencv_calib3d245d.lib'(OpenCV 2.4.9)

  13. 13

    将静态boost_filesystem库与Qt Creator链接时出错

  14. 14

    链接:致命错误LNK1104:手动配置LIB环境变量后无法打开文件'libcpmt.lib'

  15. 15

    致命错误LNK1104:无法打开文件'MSVCRT.lib'

  16. 16

    为什么我收到错误LNK1104:无法打开文件'glew32.lib'

  17. 17

    无法构建PortAudio-“ LNK1104:无法打开文件'ksguid.lib'”

  18. 18

    致命错误LNK1104:无法打开文件'gdi32.lib'

  19. 19

    LNK1104无法打开文件libboost_random-vc140-mt-1_61.lib等

  20. 20

    抑制状态错误 LNK1104 无法打开文件“IlmImfd.lib”

  21. 21

    Visual C++:链接:致命错误 LNK1104:无法打开文件“libboost_system-vc120-mt-gd-1_55.lib”

  22. 22

    可视c ++,链接:致命错误LNK1104:无法打开文件

  23. 23

    OpenCV错误:“ LINK:致命错误LNK1104:无法打开文件'opencv_core231d.lib'”

  24. 24

    错误LNK1104:无法打开文件'libboost_thread-vc100-mt-gd-1_55.lib'

  25. 25

    OpenCV错误:“ LINK:致命错误LNK1104:无法打开文件'opencv_core231d.lib'”

  26. 26

    Portaudio错误“ LNK1104:无法打开文件'ksguid.lib'”文件不在我的计算机上吗?

  27. 27

    VS2015 - LNK1104 无法打开文件 'C:\gstreamer\1.0\x86_64\lib\glib-2.0'

  28. 28

    使用boost :: filesystem时无法链接

  29. 29

    Visual Studio错误:LNK1104:无法打开文件'kernel32.lib'-仅在WP8项目/ Win32构建中

热门标签

归档