2011-02-16 64 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