У меня есть клиентское приложение в собственном коде C ++, которое использует собственные библиотеки DLL C ++. Я изучаю возможность соединения этого кода с dll c #, так как их было бы намного проще написать. Я решил написать dll-мост моста c ++ / cli, который можно загрузить с помощью LoadLibrary и который будет передавать вызовы dll c #.
Связь между клиентом и dll такова, что клиент передает указатель на объект интерфейса, через который dll затем связывается с клиентом. Я заключил этот объект в код моста c ++ / cli, чтобы код C # мог его использовать.
Мост также должен предоставлять несколько функций с помощью __declspec (dllexport) и передавать эти вызовы в dll c #, поэтому у него должен быть указатель на интерфейс C #, которому он будет передавать их. Я хотел использовать объект C # с оболочкой gcroot ‹>, но проблема в том, что я получаю циклические зависимости между этими двумя dll. C # dll должна ссылаться на dll моста, чтобы иметь возможность использовать класс-оболочку, а dll моста должна ссылаться на dll С # для использования класса интерфейса.
Я знаю, что могу использовать COM вместо обертывания объекта C # с помощью gcroot, но я бы предпочел этого не делать. Есть ли способ обойти это?