繁体   English   中英

在Cmake C#项目中使用DLL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM