Читаем C# 4.0 полное руководство - 2011 полностью

Для того чтобы объявить метод как внешний, достаточно указать в самом начале его объявления модификаторextern.Таким образом, общая форма объявления внешнего метода выглядит следующим образом.

externвозвращаемый_тип имя_метода (список_аргументов);

Обратите внимание на отсутствие фигурных скобок.

В данном варианте ключевое словоexternнередко применяется вместе с атрибутомDll Import,обозначающим библиотеку DLL, в которой содержится внешний метод. АтрибутDll Importпринадлежит пространству именSystem. Runtime . Inter op Services.Он допускает несколько вариантов, но, как правило, достаточно указать лишь имя библиотеки DLL, в которой содержится внешний метод. Вообще говоря, внешние методы следует программировать на С. (Если же это делается на C++, то имя внешнего метода может быть изменено в библиотеке DLL путем дополнительного оформления типов.)

Для того чтобы стало понятнее, как пользоваться внешними методами, обратимся к примеру конкретной программы, состоящей из двух файлов. Ниже приведен исходный код С из первого файлаExtMeth. с,где определяется методAbsMax .

#include

int _declspec(dllexport) AbsMax(int a, int b) {

return abs(a) < abs(b) ? abs(b)    :    abs(a);

}

В методеAbsMax сравниваются абсолютные значения двух его параметров и возвращается самое большое из них. Обратите внимание на обозначение _declspec (dllexport). Это специальное расширение языка С для программных средств корпорации Microsoft. Оно уведомляет компилятор о необходимости экспортировать метод AbsMax из библиотеки DLL, в которой он содержится. Для компилирования файла ExtMeth. с в командной строке указывается следующее.

CL /LD /MD ExtMeth.с    ,

В итоге создается библиотечный файл DLL — ExtMeth .dll.

Далее следует программа на С#, в которой применяется внешний метод AbsMax.

using System;

using System.Runtime.InteropServices;

class ExternMeth {

// Здесь объявляется внешний метод.

[Dlllmport("ExtMeth.dll")]

public extern static int AbsMax(int a, int b);

static void Main {

// Использовать внешний метод, int max = AbsMax(-10, -20);

Console.WriteLine(max);

}

}

Обратите внимание на использование атрибута Dlllmport в приведенной выше программе. Он уведомляет компилятор о наличии библиотеки DLL, содержащей внешний метод AbsMax . В данном случае это файл ExtMeth. dll, созданный во время компиляции файла с исходным текстом метода AbsMax на С. В результате выполнения данной программы на экран, как и ожидалось, выводится значение 20.

Объявление псевдонима внешней сборки

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT