Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.12.2015
Сообщений: 3
1

Неуправляемый код (unmanaged code) в управляемом коде (managed code)

24.12.2015, 23:12. Просмотров 1208. Ответов 1
Метки нет (Все метки)

Товарищи!
Прошу Вашей профессиональной помощи.
1. Что происходит в блоке выделенным красным шрифтом (после static class NativeMethods), чем подробнее тем продуктивнее будет для меня)
2. почему в "Program.CS" указывается: NativeMethods.fnmylib () и NativeMethods.add , а не просто NativeMethods

mylib.h
C++
1
2
3
#define MYLIB_API extern "C" __declspec(dllexport)
MYLIB_API int fnmylib(void);
MYLIB_API int add(int, int);
mylib.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include "mylib.h"
// Пример экспортированной функции.
MYLIB_API int fnmylib(void)
{
    return 42;
}
 
MYLIB_API int add(int arg0, int arg1)
{
    return arg0 + arg1;
}
NativeMethods.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System.Runtime.InteropServices;
 
namespace injectionunmanagerdcode
{
    static class NativeMethods
    {
       [COLOR="Red"] [DllImport("mylib.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
        public static extern int fnmylib();
        [DllImport("mylib.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
        public static extern int add(int arg1, int arg2);[/COLOR]
    }
}
Programm.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
 
namespace injectionunmanagerdcode
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = NativeMethods.fnmylib();
            Console.WriteLine("returned value is {0}", NativeMethods.add(12, 45));
            Console.Write("press enter to close program");
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 23:12
Ответы с готовыми решениями:

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-библиотека с...

Подключение библиотек DirectX for Managed Code
Всем привет. У меня возникла проблема. Мне нужно воспроизвести видео средствами DirectX for...

Как в Excel'е в VBProject.Module1.Code прописать команду заносящую(передающую) код в VBProject.Sheet1.Code?
Как в Excel'е в VBProject.Module1.Code прописать команду заносящую(передающую) код в...

1
Супер-модератор
Эксперт .NET
12031 / 10036 / 4193
Регистрация: 17.03.2014
Сообщений: 20,156
Записей в блоге: 1
25.12.2015, 08:55 2
Dmitriy114, 1. Объявляются два внешних метода код которых находится в mylib.dll. При их вызове исполняющая среда .NET (CLR) попытается загрузить эту библиотеку и найти экспортированый метод fnmylib или add. В случае успеха метод выполняется.

2. Методы fnmylib и add объявлены как static внутри класса NativeMethods, а обращение к ним идет из класса Program. По правилам C# в этом случае необходимо указывать имя в виде ИмяКласса.ИмяМетода
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2015, 08:55

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

Ошибка fatal error C1190: managed targeted code requires and '/clr' option
У меня в проекте есть форма и dll. Пытаюсь скомпилировать, выдается ошибка: fatal error C1190:...

fatal error C1190: managed targeted code requires '#using <mscorlib.dll>' and '/clr' option
fatal error C1190: managed targeted code requires '#using &lt;mscorlib.dll&gt;' and '/clr' option что...

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

Ошибка: Unable to invoke Code Completion due to errors in source code
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...


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

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

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