2016-04-21 7 views
2

У меня возникли проблемы с выяснением того, как ссылаться на управляемый код C++, который вызывает код C# из неуправляемого кода на C++. Позвольте мне выбросить несколько сценариев:Неуправляемый код кода C++ управляемый код C++, который вызывает код C#

  1. у меня неуправляемый ссылочный код и вызвать мой управляемый код, вызов моего управляемого кода на мой C# код закомментирована, строит и работает просто отлично. Я раскомментирую свой код C#, теперь я получаю ошибки компилятора, говоря, что мое пространство имен C# не существует.
  2. В моем неуправляемом коде я прокомментирую ссылку и позвоню в мой управляемый код. Мой управляемый код вызывает мой код C#. Строит и работает просто отлично ... Вы получаете картину отсюда.

Ошибка компилятора C2653.

Вот что я делаю:

Неуправляемый C++ код: Я установил компоновщик включить мой Managed C++ Lib файл.

#include "ManagedCpp.h" 

ManagedCpp::foo(); 

Managed C++:

extern "C" __declspec(dllexport) void __stdcall foo() 
{ 
    CssCode::bar(); 
} 

C#

public static void bar() 
{ 
    // From here it initializes some stuff from the registry 
    // into some data structures which I plan on marshaling 
    // back with other method calls, which I know involves placing 
    // things on the stack that can be returned normally to the 
    // managed c++ code which then will need to be marshed back to the 
    // unmanaged c++ code. 
    // All code will be static. 
} 

Что я делаю неправильно? Насколько я могу судить, мне нужно скрыть свои вызовы C# из неуправляемого кода, но я не совсем уверен, как это сделать.

+0

Обеспечить больше контекста. Что такое ошибка компилятора? Каково определение класса 'CssCode', а именно' bar() 'method? Это метод «public static»? – Xiaoy312

+0

Я отредактирую сообщение, чтобы дать дополнительную информацию. – Wes

+0

Вы можете смешивать неуправляемый и управляемый C++ в одном модуле компиляции. Нет необходимости переместить управляемый C++ в отдельную DLL. Просто говорю'. Кроме того, вы можете вызывать C# dll прямо из неуправляемого C++, либо через COM-видимые сборки, либо через семейство API CorXXX. –

ответ

0

Пустая ошибка.

Я поставил вызов из управляемого C++ в код C# в заголовке. Упс. Кажется, все работает отлично!

 Смежные вопросы

  • Нет связанных вопросов^_^