Visual studio 如何使用CMake生成vs项目,该项目链接到一些.dll文件
我使用Cmake生成VS项目,基于Visual studio 如何使用CMake生成vs项目,该项目链接到一些.dll文件,visual-studio,cmake,Visual Studio,Cmake,我使用Cmake生成VS项目,基于 if(WIN32) MESSAGE(WINDOWS) LINK_LIBRARIES(${***_Test_SOURCE_DIR}/../../Build/Win32/Release/***.dll) else(WIN32) MESSAGE(POSIX) LINK_LIBRARIES(${***_Test_SOURCE_DIR}/../../Build/POSIX/lib***.so) endif(WIN32) 但是当我打开生成
if(WIN32)
MESSAGE(WINDOWS)
LINK_LIBRARIES(${***_Test_SOURCE_DIR}/../../Build/Win32/Release/***.dll)
else(WIN32)
MESSAGE(POSIX)
LINK_LIBRARIES(${***_Test_SOURCE_DIR}/../../Build/POSIX/lib***.so)
endif(WIN32)
但是当我打开生成的项目时,构建并抛出它
\***.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B0
有人有想法吗
如果不使用CMake,如何在VS项目中添加外部dll(不引用某些项目)文件。有什么严格的步骤我可以遵循吗
谢谢- 在Windows上,您需要针对.lib而不是.dll进行链接,这很愚蠢,但Microsoft对静态库和动态库使用相同的.lib扩展名。在
中应该有${***\u Test\u SOURCE\u DIR}/./../Build/Win32/Release/
***.lib
LINK_LIBRARIES(${***_Test_SOURCE_DIR}/../../Build/Win32/Release/***.lib)
- 如果不是这样,您可以按照本文从
构建.dll
:。在VS命令提示符内简要说明(摘自):.lib
dumpbin /exports C:\yourpath\yourlib.dll
ordinal hint RVA name
1 0 00017770 jcopy_block_row
2 1 00017710 jcopy_sample_rows
3 2 000176C0 jdiv_round_up
4 3 000156D0 jinit_1pass_quantizer
5 4 00016D90 jinit_2pass_quantizer
6 5 00005750 jinit_c_coef_controller
...etc
现在复制所有这些函数名(只有名称!)并将它们粘贴到新的文本文件中。将下一个文件命名为yourlib.def,并将行“EXPORTS”放在其顶部。我的yourlib.def文件如下所示:
EXPORTS
jcopy_block_row
jcopy_sample_rows
jdiv_round_up
jinit_1pass_quantizer
jinit_2pass_quantizer
jinit_c_coef_controller
...
现在,从该定义文件,我们终于可以创建.lib文件了。为此,我们使用“lib”工具,因此请在Visual Studio命令提示符中运行此命令:
lib /def:C:\mypath\mylib.def /OUT:C:\mypath\mylib.lib
你确定这些是有效的.dll文件吗?