【问题标题】:Using a DLL in a Cmake C# project在 Cmake C# 项目中使用 DLL
【发布时间】:2019-09-04 03:21:29
【问题描述】:

我正在尝试使用 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的答案中提出的,但它仍然不起作用。

【问题讨论】:

    标签: c# dll cmake


    【解决方案1】:

    对于第三方 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)。另一个例子见answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多