2010-02-18 2 views
0

У меня есть C# exe и некоторые vC++ dll. Я создаю callBackFunction в C#, который принимает структуру в качестве параметров. Моя dll C++ заполнит эту структуру и вернет ее обратно. Но 95% времени My Exe сбой. Моя dll многопоточная, и у меня на C# есть backgroundWorker. Я поставил блок catch try, чтобы проверить, не приходят ли какие-либо исключения или нет, но исключение не происходит. Может ли кто-нибудь предложить лучший способ отправить данные из моей vC++ dll в C# exeФункция CallBack от C# до C++

+1

Вам нужно положить в коде примера. Существует несколько различных способов передачи параметров и обработки обратных вызовов C++, любые из которых могут быть ошибочными, если они сделаны неправильно. Имейте в виду также, что, несмотря на то, что говорит документация, у .NET есть привычка к сбору мусора, управляющему ударами из-под C++. – plinth

ответ

1

это должно работать:
(C#)

namespace Test 
{ 
    public class CallbackClass 
    { 
     public void Callback(string s) 
     { 
      MessageBox.Show(s); 
     } 
    } 
} 

(C++/CLI)

... 
Test::CallbackClass::Callback(gcnew System::String("woof!"); 
... 
0

Если вы хотите реализовать интерфейс COM, а затем вы можете вызвать методы из этого интерфейса с любого клиента .Net.

Основные example осуществления.