如何将C ++程序链接到Visual Studio外部的C#DLL?

时间:2019-02-26 10:59:46

标签: c# c++ visual-studio

我有一个简单的C ++程序,它调用C#DLL。它发送和接收一个字符串。

#include "stdafx.h"
#include <string>
#include <msclr\marshal_cppstd.h>

char* callCsDLL(char* arg) {
    // arg will be passed to C# DLL method
    // and result will contain a string reply

    // Copy a new System::String^ from char*
    System::String^ clrString = msclr::interop::marshal_as<System::String^>(arg);

    // Call C# function
    System::String^ t = Namespace::Class::run(clrString);

    // Create new std::string from System::String^
    std::string cppString = msclr::interop::marshal_as<std::string>(t);

    // Copy C++ string to the result
    char* result = new char[cppString.length() + 1];
    strcpy(result, cppString.c_str()); 
    return result;
}

在Visual Studio 2017中,这很容易做到,使用C ++ CLR,只需将C#DLL添加到C ++项目中的引用中,然后进行构建。几乎是魔术。

我如何在Visual Studio外部,即使用命令行将它们链接在一起?我可以完全避免使用MSBUILD吗?生成的可执行文件应仅使用DLL。

0 个答案:

没有答案