[英]Using a DLL in a Cmake C# project
我正在尝试使用CMake构建C#DLL。 为此,我需要向项目中添加第三方.dll,以便可以使用其所需的某些功能。
问题是,我可以访问该库,甚至无法访问
using Namespace;
有效,因为无法识别Namespace
。
# cmake version
cmake_minimum_required (VERSION 3.8)
# project
project ("VILAPI" CSharp)
# include directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# source and library output paths and directories
set(SRCS_VILAPI "./src/main.cs")
set(OUT_DIR ${CMAKE_HOME_DIRECTORY}/bin)
# actual building process
add_library (${project} SHARED ${SRCS_VILAPI})
set_property(TARGET ${project} PROPERTY DOTNET_TARGET_FRAMEWORK_VERSION "v4.0")
set_property(TARGET ${project} PROPERTY WIN32_EXECUTABLE FALSE)
set_property(TARGET ${project} PROPERTY VS_CONFIGURATION_TYPE ClassLibrary)
set_property(TARGET ${project} PROPERTY VS_DOTNET_REFERENCES
"System"
"./lib/Vector.CANoe.TFS.dll"
)
set_target_properties(${project} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${OUT_DIR})
set_target_properties(${project} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${OUT_DIR})
CMake不会抛出错误。 我也尝试通过以下方式添加它:
set_property(TARGET ${project} PROPERTY VS_DOTNET_REFERENCE_Vector.CANoe.TFS.dll "./lib/Vector.CANoe.TFS.dll")
这是在关于stackoverflow的答案中建议的,但仍然无法正常工作。
对于第三方DLL引用,应使用VS_DOTNET_REFERENCE_<refname>
属性。 VS_DOTNET_REFERENCES
属性通常仅用于Visual Studio托管引用。
您使用VS_DOTNET_REFERENCE_<refname>
属性的set_property()
命令已关闭,只需要进行一点更改:
set_property(TARGET ${project} PROPERTY VS_DOTNET_REFERENCE_Vector.CANoe.TFS "./lib/Vector.CANoe.TFS.dll")
<refname>
应该引用不带 .dll
文件扩展名的DLL文件名(即,仅Vector.CANoe.TFS
)。 参见此答案的另一个示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.