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

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

24.12.2015, 23:12. Просмотров 536. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 23:12
Ответы с готовыми решениями:

Ошибка определения логической переменной в управляемом коде
Привет. Есть модуль на Delphi, кусок кода: IsSmth: boolean; function...

PInvoke и представление параметра void** в управляемом коде
Здравствуйте! Проблема состоит в следующем: В библиотеке на CPP имеется некая...

Возможно ли вызвать функции неуправляемого консольного приложения в управляемом коде?
Всем привет! Ребят вопрос общего характера. Есть консольное приложение на C....

Неуправляемый код тоже компилируется в байтовый?
Кто знает, пожалуйста скажите :)

Некорректная передача аргумента в неуправляемый код
Здравствуйте, форумчане. Планируется написание обертки над кодом из С++ в виде...

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

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

Освободить память из под bitmapа (неуправляемый код)
Режу bitmap на куски примерно таким кодом private static unsafe...

Code HTML
Добрый вечер! Подскажите пожалуйста как можно достать ХТМЛ код со страницы...

paint code in C#
Я новичок по програмированнию на C#, мне нужно код для paint. Если у кого то...


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

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

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