我有一个简单的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。