Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 02.06.2013
Сообщений: 20
1

Взаимодействие управляемого и не управляемого кода

30.07.2015, 02:13. Просмотров 1423. Ответов 4
Метки нет (Все метки)


Есть проект Win32Project1
В Win32Project1 есть функция
C++
1
2
3
4
void Test()
{
    MessageBox( 0, L"Imported", L"Imported", MB_OK );
}
на выходе получается Win32Project1.dll

Есть проект WpfApplication1 - это простая форма с 1 кнопкой
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        [DllImport("Win32Project1.dll")]
        private static extern void Test();
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Test();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
Пишет не удается найти точку входа Test в DLL Win32Project1.dll

Гуглил... пишут что компилятор по разному может изменять реальное имя функций, но тогда почему я спокойно вызываю функции из WinAPI
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2015, 02:13
Ответы с готовыми решениями:

Обращение управляемого кода к неуправляемому
1)Вопрос такой как идет обращение неупрвляемого кода к управляемому?Сборщик мусора может чистить...

Реализация управляемого кол-во потоков
Всем доброго утро :) Итак, есть метод выполняющий некий алгорит запрос<->ответ. Хотелось бы...

Недопустимое сочетание управляемого и неуправляемого типов
Написал на C++ dll-ку: extern "C" __declspec(dllexport) double *mas (double Xmin, double Xmax,...

Как обеспечить поддержку управляемого C++ в MFC-приложении?
Задача заключается в следующем: Нужно написать DLL, которая будет содержать функции, работающие...

4
153 / 153 / 56
Регистрация: 20.12.2011
Сообщений: 1,614
30.07.2015, 08:37 2
Lorise,
C#
1
 using System.Runtime.InteropServices;
подключили?
0
0 / 0 / 0
Регистрация: 02.06.2013
Сообщений: 20
31.07.2015, 05:11  [ТС] 3
Естественно, все компилируются

Добавлено через 1 минуту
не удается найти точку входа Test в DLL Win32Project1.dll - это не ошибка при компиляции, а исключение
0
Администратор
Эксперт .NET
13070 / 10653 / 4397
Регистрация: 17.03.2014
Сообщений: 21,455
Записей в блоге: 1
31.07.2015, 06:32 4
Лучший ответ Сообщение было отмечено Lorise как решение

Решение

Lorise, метод Test должен быть экспортирован из DLL (проверить можно с помощью dumpbin /EXPORTS) и у нее должен быть указан модификатор extern "C". Все это в с/с++ коде разумеется.
1
0 / 0 / 0
Регистрация: 02.06.2013
Сообщений: 20
31.07.2015, 10:32  [ТС] 5
Спасибо, все получилось
C++
1
2
3
4
5
6
#include <Windows.h>
 
extern "C" __declspec(dllexport) void Test()
{
    MessageBox(0, L"Imported", L"Imported", MB_OK);
}
остальное без изменений
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2015, 10:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Быстродействие управляемого и неуправляемого кода
начал изучать небезопасный код,написал прогу в ней 2 функции одна с управляемым кодом вторая...

C++ Связь управляемого кода с обычным
Всем добрый день. Пишу графическое приложение (редактор карт для игры) на DirectX9. Всей...

Безопасность управляемого кода .NET
Прочитал для меня шокирующие заявление в статье журнала argc &amp; argv '...При этом, вам нужно...

Не могу вытащить string из управляемого кода
Здравствуйте! столкнулся с проблемой вытаскивания строки из c# в с++... есть код на c# ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.