c++ - CMake 链接到 Windows : error about not finding . lib 文件上的共享库

标签 c++ windows cmake

我在 CMake 中有一个库定义,它构建了一个共享库 一小部分文件,我已经在 linux 和 windows 上编译得很好。

但是,我还有另一个链接到共享库的库,它在 Linux 上运行良好,但是,在 Windows 上,我收到一条消息或“错误找不到 Release/nnet.lib”链接时间。有什么特别的我必须做才能做到这一点 Windows 上的链接?

编辑,例子:

主要共享库(更改文件名以保护无辜者):

ADD_LIBRARY(nnet SHARED
  src/nnet/file_1.cc src/nnet/file_3.cc  
  src/nnet/file_2.cc src/nnet/file_4.cc)

然后我正在构建一个链接到库中的 python 模块:

# Build python module
ADD_LIBRARY            (other_lib SHARED ${CMAKE_SOURCE_DIR}/src/boost/boost_main.cc)
TARGET_LINK_LIBRARIES  (other_lib nnet   ${PYTHON_LIBRARIES})

剩下的只是样板文件(例如:在 Windows 上将模块扩展名更改为 .pyd,查找 python 库/ header 等) 然后在 VS 2008 中构建时我得到:

fatal error LNK1181: cannot open input file 'Release\nnet.lib'

构建 other_lib 时。请注意,构建 nnet 时不会抛出任何错误。

最佳答案

啊,我的问题是我忘记在构建库时在合适的地方包含一个 __declspec(dllexport)(你能看出我不经常进行 Windows 编程吗?)。

关于c++ - CMake 链接到 Windows : error about not finding . lib 文件上的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941443/

相关文章:

c++ - 调试嵌入式目标时使用了错误的 python 解释器

c++ - CreateDirectory 报告失败,但错误代码为 ERROR_SUCCESS

windows - 我可以在单个 DLL header 中混合 C 和 C++ 导出吗?

c++ - 从 ListView 中选择并突出显示项目

CMake:如何让execute_process 等待子目录完成?

c++ - 制作文件后启用 cmake 选项/标志

c++ - 如何通过 Win API 配置快捷方式标题

使用类成员的 C++ 回调

c++ - 抽象类中的公共(public)构造函数是代码气味吗?

c++ - OpenSceneGraph:第三人称视角