Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как вызвать из Visual C++ 6 код написанный под C#


Автор: compaq 10.9.2009, 11:59
Всем доброго дня или ночи
Вопрос в следующем  как вызвать из Visual C++ 6 код написанный под C# 
Есть старая программа, двухтысячного года,  написанная на Visual C++ 6 под неё нужно написать плагин в виде dll я и хочу написать обертку на Visual C++ которая  вызывала бы код на C# этот код выполнял все нужные действия и возвращал результат обратно в C++ обёртку. Подскажите в какую сторону копать. Заранее спасибо.

Автор: jonie 13.9.2009, 11:45
делайте по шагам....

1. сделайте простейшую либу на c#
Код

namespace Net2Com
{
    [ComVisible(true)]                                      //важно чтобы было
    [Guid("1A26B23B-2291-4e45-A98C-86ECF48F09D9")]        //не обяз
    [ProgId("Net2Com.MegaPlugin")]                          //не обяз
    public class MegaPlugin
    {
    }
}


2.регите ее в реестре используя regasm Net2Com.dll
3. делаете Com Wrapper используя комманду:
Код

tlbexp Net2Com.dll /out:Net2Com.ComWrapper.tlb /win32

4. далаете C++ простейший hello word, где пишите:
Код

#import "Net2Com.ComWrapper.tlb"

int main() {
    CoInitializeEx(0,0);
    Net2Com::_MegaPluginPtr mpt;
    HRESULT hr = mpt.CreateInstance(__uuidof(Net2Com::MegaPlugin));
    return 0;
}


вот вроде ничего не забыл...

Автор: NatNiM 14.4.2011, 15:01
Здравствуйте.

А можно, таким способом подключив dll, вызвать из кода на C++ (например, при нажатии кнопки на форме) форму из подключенной dll (dll на C#)?

Спасибо.

Автор: jonie 15.4.2011, 14:53
ну можно, да. Там сгенерирует #import что надо вам (у меня просто "плагин", а вообще там будут и публичные методы светиться, если смогут экспортироваться параметры этих методов)
только наверно лучше использовать regasm dllName /codebase (добавить /codebase к тому что я написал выше)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)