1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 11
1

Как вызвать из C# объект в C++/CLI managed/unmanaged?

13.12.2010, 18:21. Показов 1998. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Моя попытка. Использую MS Visual Studio 2008 SP1.
После компиляции/компоновки запуск Main.exe даёт FileNotFoundException (из HRESULT: 0x8007007E) в TestUnmanaged.Main.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// cl /clr /LN Sub.cpp
using namespace System;
#pragma unmanaged
void Dummy () {;}
#pragma managed
namespace MySubSpace {
  ref class Sub1 {
    public:
      void SaySub1 (String ^name) {
        Console::WriteLine ("Sub1 says : {0}", name);
        Dummy ();
    }
  };
}
 
// csc Main.cs /addmodule:Sub.netmodule /platform:x86
using System;
using MySubSpace;
 
public class TestUnmanaged {
  public static void Main () {
    Sub1 s1 = new Sub1();
    s1.SaySub1 ("from Main");
  }
}
Если закомментировать в Sub.cpp четыре строки с pragma и Dummy и применить cl /clr:safe /LN Sub.cpp, то Main.exe выполняется успешно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2010, 18:21
Ответы с готовыми решениями:

Скорость вызовов managed unmanaged
Подскажите пожалуйста, какие вызовы между управляемым и неуправляемым кодом быстрее и насколько...

Как вызвать с помощью команды Calli(MSIL) процедуру из unmanaged DLL
Задача в том чтобы написать на MSIL процедуру вызова функции из unmanaged DLL не прибегая к...

Неуправляемый код (unmanaged code) в управляемом коде (managed code)
Товарищи! Прошу Вашей профессиональной помощи. 1. Что происходит в блоке выделенным красным...

Использовать unmanaged C++ dll из ресурсов managed C# dll
Как некоторые знают, C# компилируется в CIL код который легко читается декомпиляторами, моя же цель...

1
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 11
17.12.2010, 09:59  [ТС] 2
Проблема решена в MS Visual Studio 2010 с ключом /unsafe компилятора csc
0
17.12.2010, 09:59
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2010, 09:59
Помогаю со студенческими работами здесь

Managed code vs Unmanaged code: Speed Performance
Я слышал unmanaged native code быстрее чем managed code. C# Windows Forms это managed code....

Unmanaged c++ code & managed c# code
Вечер добрый, товарищи. В решении присутствует два проекта: 1. C# консоль 2. CLR-библиотека с...

Как правильно вызвать объект
Доброго времени суток, такое дело создаю свою функцию и из неё вызвать Label, но выходит ошибка. ...

Как исправить ошибку error C2230: "a member function of a managed class cannot return a non-managed class"
Здравствуйте! Помогите пожалуйста исправить ошибку error C2230: 'GenerateRandomHReal' : a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru