Как вызвать функцию c # с параметром out в c ++/CLI

Я очень новичок в C ++.

У меня есть C# dll, которую я хочу назвать в проекте c ++.

Функция в C# я бы объявила ее так:

   public int ShowStringReturn(out string str)
    {
        str = "Message from c#";
        return 0; 
    } 

Затем я называю это в своем проекте на C ++:

__declspec(dllexport) 
    int ShowStringCSharpReturn (std::string &strOut)
    {
        try
        {  
            String^ str; 
            IngWrapper::Ingressus_Instance->xIMUobject->ShowStringReturn(str);  

            using System::Runtime::InteropServices::Marshal; 
            const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(str)).ToPointer( );
            strOut = chars; 

            return 0; 
        }
        catch (Exception^ ex)
        {
            MessageBox::Show(ex->Message,"Error",MessageBoxButtons::OK,MessageBoxIcon::Error);
            return -1;
        }
    }

Я могу скомпилировать его, но когда я вызываю dll activex в моем приложении с формой окна, я получаю сообщение об ошибке «Внешний компонент выкинул исключение», Как я могу объявить и вызывать свою функцию?

0
nl ja de
Мы предполагаем, что они используют ту же версию DLL и CRT. Теперь проблема в том, что мне не удалось преобразовать String ^ в std :: string. Я могу получить возврат сообщения от C#, но когда я попытался сделать преобразование, он получил исключение.
добавлено автор user2021195, источник
Единственное, что действительно очевидно, это то, что вы протекаете строковый буфер и играете очень опасную игру, передавая объект C ++ через границы DLL. Что взорвется, если вызывающий код C ++ не использует ту же DLL-версию CRT, что и код C ++/CLI. Вам нужно будет обеспечить лучшую диагностическую, по крайней мере, трассировку стека.
добавлено автор Hans Passant, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest