Как вызвать библиотеку C# из Native C++ (используя C++\CLI и IJW)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как вызвать библиотеку C# из Native C++ (используя C++\CLI и IJW)

Сообщение Anonymous »

Справочная информация: В рамках более крупного задания мне нужно сделать библиотеку C# доступной для неуправляемого кода C++ и C. Пытаясь самому ответить на этот вопрос, я изучал C++/CLI последние несколько дней/недель.

Похоже, существует несколько различных способов использования dll C# из неуправляемых C++ и C. Вот некоторые из кратких ответов: использование служб Interlope, Использование домена .com. и regasm, использование PInvoke (который, по-видимому, предназначен только для C# на C++) и использование IJW в C++/CLR (который, по-видимому, является службами Interlope). Я думаю, что было бы лучше создать библиотеку, которая, возможно, является оболочкой CLR, которая использует IJW для вызова моей библиотеки C# от имени собственного кода C++ и C.

Особенности: мне нужно передать значения string, а также int в dll C# из кода C++ и вернуть void.

Особенности: мне нужно передать значения string и int в dll C# из кода C++ и вернуть void.

Особенности: мне нужно передать значения string, а также int в dll C# из кода C++ и вернуть void.

Особенности: мне нужно передать значения string, а также int, в dll C# из кода C++ и вернуть void.

Особенности: мне нужно передать значения string, а также int в dll C# из кода C++ и вернуть void.

Особенности: мне нужно передать значения string, а также int в dll C# из кода C++ и вернуть void.

Особенности. >

Актуальность: Многие компании находят множество оправданий для смешивания и сопоставления C++, C и C#. Производительность: неуправляемый код обычно быстрее. Интерфейсы. Управляемые интерфейсы, как правило, легче поддерживать, развертывать и часто приятнее на вид, также говорят нам менеджеры. Устаревший код заставляет нас тоже. Оно было там (как гора, на которую мы поднялись). Хотя примеров того, как вызвать библиотеку C++ из C#, предостаточно. Примеры вызова библиотек C# из кода C++ сложно найти в Google, особенно если вы хотите увидеть обновленный код версии 4.0+.

Программное обеспечение: C#, C++/CLR, C++, C, Visual Studio 2010 и .NET 4.0

Подробности вопроса:
Хорошо, вопрос из нескольких частей:
  • Есть ли преимущество в использовании com-объектов? Или PInvoke? Или какой-то другой метод? (Я чувствую, что кривая обучения здесь будет столь же крутой, хотя я нахожу больше информации по этой теме в Google Land. Кажется, IJW обещает то, что я хочу. Должен ли я отказаться от поиска решения IJW и вместо этого сосредоточьтесь на этом?) (Преимущество/недостаток?)
  • Правильно ли я полагаю, что существует решение, в котором я пишу оболочку, которая использует IJW в С++/CLR? Где я могу найти дополнительную информацию по этой теме, и не говорите, что я недостаточно гуглил или заглядывал в MSDN, не сообщая мне, где вы это там видели. (Думаю, я предпочитаю этот вариант, стремясь писать понятный и простой код.)
  • Сужение круга вопросов: я чувствую, что моя истинная проблема и Необходимо ответить на следующий меньший вопрос: как настроить библиотеку C++/CLR, которую неуправляемый файл C++ может использовать в Visual Studio. Я думаю, что если бы я мог просто создать экземпляр управляемого класса C++ в неуправляемом коде C++, то я мог бы поработать и со всем остальным (интерфейсом, оберткой и т. д.). Я ожидаю, что моя главная глупость заключается в попытке настроить ссылки/#includes и т. д. в Visual Studio, хотя, очевидно, у меня могут быть и другие заблуждения. Возможно, ответом на все это может быть просто ссылка на учебник или инструкции, которые помогут мне в этом.
Исследование: Я снова и снова гуглил и пользовался Bings с некоторым успехом. Я нашел много ссылок, показывающих, как использовать неуправляемую библиотеку из кода C#. И я признаю, что было несколько ссылок, показывающих, как это сделать с помощью com-объектов. Не так много результатов было нацелено на VS 2010.

Ссылки:
Я перечитывал множество сообщений. Я постарался рассмотреть наиболее актуальные из них. Некоторые кажутся очень близкими к ответу, но я просто не могу заставить их работать. Я подозреваю, что то, что мне не хватает, дразнительно мало, например, неправильное использование ключевого слова ref, или отсутствие #include или оператора using, или неправильное использование пространства имен, или неправильное использование функции IJW, или отсутствие параметра, который VS необходимо правильно выполнить компиляцию и т. д. Вы задаетесь вопросом, а почему бы не включить код? Что ж, я чувствую, что нахожусь не в том месте, где понимаю и ожидаю, что код, который мне нужен, будет работать. Я хочу быть там, где я это понимаю, и когда я туда доберусь, возможно, мне понадобится помощь, чтобы это исправить. Я включу две ссылки случайным образом, но мне не разрешено показывать их все на моем текущем уровне здоровья.

http://www.codeproject.com/Articles /35437/Moving-Data-between-Managed-Code-and-Unmanaged-Cod

Это вызывает код из управляемого и неуправляемого кода в обоих направлениях, начиная с C++ и Visual Basic. и обратно через C++CLR, и, конечно, меня интересует C#: http://www.codeproject.com/Articles/990 ... e-and-vice

Подробнее здесь: https://stackoverflow.com/questions/132 ... li-and-ijw
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»