以C++;从COM可见的C#dll
我有一个C#dll,它是COM可见的,并且具有事件处理程序委托。 在C语言程序中使用它没有问题,但是我正在努力接收C++中的事件;p> 这是C代码的简单示例:以C++;从COM可见的C#dll,c#,c++,dll,com,event-handling,C#,C++,Dll,Com,Event Handling,我有一个C#dll,它是COM可见的,并且具有事件处理程序委托。 在C语言程序中使用它没有问题,但是我正在努力接收C++中的事件;p> 这是C代码的简单示例: 这里是我在C++实例中使用的例子: #include <stdlib.h> #include <wchar.h> #include <windows.h> #using <mscorlib.dll> #using "TestCode.dll" using namespace System
这里是我在C++实例中使用的例子:
#include <stdlib.h>
#include <wchar.h>
#include <windows.h>
#using <mscorlib.dll>
#using "TestCode.dll"
using namespace System;
using namespace System::Runtime::InteropServices;
using namespace System::Collections;
using namespace TestCode;
namespace libTestCode {
public ref class Class1
{
public:
static DataValidator^ cc = nullptr;
};
}
非常感谢您的帮助。事实证明,添加事件侦听器与在C中几乎相同#
只需编辑实现C++文件< /p>
void init()
{
libTestCode::Class1::cc = gcnew DataValidator();
DataReceivedHandler ^handler = gcnew DataReceivedHandler(myHandler);
libCashCode::Class1::cc->DataReceived += handler;
}
void myHandler(Object ^obj, DataReceivedEventArgs ^eventArgs)
{
}
我的错误是,我忘了在myHandler中使用参数“^”符号。请访问您当地的图书馆或书店以获得成功。实际上,您并没有使用C++,也没有实际使用COM。这种对静电的无端使用会给你带来大麻烦。
#include "libTestCode.h"
void init()
{
libTestCode::Class1::cc = gcnew DataValidator();
libCashCode::Class1::cc->DataReceived += gcnew ?????????
return NULL;
}
void init()
{
libTestCode::Class1::cc = gcnew DataValidator();
DataReceivedHandler ^handler = gcnew DataReceivedHandler(myHandler);
libCashCode::Class1::cc->DataReceived += handler;
}
void myHandler(Object ^obj, DataReceivedEventArgs ^eventArgs)
{
}