2011-02-16 30 views
3

我有一个C#应用程序,它调用用C++编写的DLL中的函数。该呼叫做工精细,并在C#中使用这种方法执行代码:从C#调用C++函数并将数据发送回C#

[DllImport("myDLL.dll")] 
public static extern void Function(); 

static void Main() 
{ 
    Function(); 
} 

现在这个工作,我需要执行的C++代码的文本发送回C#在那里可以显示在面板上。

文本是“第一阶段......”执行代码......然后是“第二阶段”等,显示正在运行的进程。只是基本的东西。我不知道如何解决这个问题,因为我不是C++的人。我的主要技能是.NET。

干杯

回答

2

尝试在C++中使用回调,并在C#签下他们

C++部分

typedef void (CALLBACK *pfNotifyMessage)(LPTSTR); 

extern "C" AFX_API_EXPORT void SetNotifyMessage(pfNotifyMessageType pfNotify); 
extern "C" AFX_API_EXPORT void Function(); 

在C++ pfNotifyMessage的函数调用发出呼叫

C#部分

public delegate void NotifyMessage(string message); 

[DllImport("myDLL.dll")] 
public static extern void SetNotifyMessage(NotifyMessage notify); 

[DllImport("myDLL.dll")] 
public static extern void Function(); 

inС#分配代理功能

+0

嗨C++代码在添加代码时会导致一些错误 – Funky

+0

它只是一个用于C++ lib的头文件,您需要实现回调 – Stecya

+0

您可能会看到这篇文章以获取基本信息写回调http://cc.byexamples.com/2007/10/11/simple-callback-function/ – Stecya