我在CLI和I之间进行通信需要从我的C函数返回一个字符串向量。我在c ++ / c#之间没有做太多的cli所以请告诉我是否有更好的方法来实现这一点。
//Plugin.cpp
void PluginMain(){
ServiceClientHook();
}
//Plugin.h;
extern "C" {
vector<std::string> ServiceClientHook();
}
//ServiceClientHook.h
#include "Plugin.h"
//ServiceClientHook.cpp
string ServiceClientHook()
{
return "Foobar";
}
如何处理ServiceClientHook()?我应该补充一点,我在我的插件上使用非cli,在我的ServiceClientHook上使用cli
目前,当我尝试从&#39; Plugin.h返回一个向量时, C链接函数无法返回C ++类&#39; std :: vector&gt;&#39;
答案 0 :(得分:0)
听起来你在同一个C ++ / CLI DLL项目中有两个函数:
PluginMain
- 与非托管EXE交谈,可能是C ++,也许不是ServiceClientHook
- 与C#DLL对话你根本不需要做任何特别的事情就可以相互交谈。摆脱extern "C"
上的ServiceClientHook()
,它就可以了。即使ServiceClientHook()
在使用/clr
的文件中,PluginMain
也是普通的C ++。
现在,PluginMain
可能需要extern "C"
和__declspec(dllexport)
来帮助EXE找到它。但这些要求并不适用于它所使用的功能。