以C++;从COM可见的C#dll

以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#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;
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) 
{

}