AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 28.12.2008, 10:37   #1  
_scorp_ is offline
_scorp_
Участник
_scorp_'s Avatar
MCBMSS
 
488 / 369 (13) ++++++
Join Date: 25.07.2007
Location: Москва
C# dll в Axapta 3.0
Пробовал, ничего не помогает, в аксапте полученный Com объект невозможно создать, хотя регистрируется успешно, в GAC устанавливается и в реестре прописываются нужные ключи.

Quote:
Originally Posted by gl00mie View Post
Cпасибо, так получилось. Решил накидать простенький примерчик
1.Создаем в VS проект C# Class Library c именем TestNetDll.
2.Пишем простенький класс, в котором будут присутствовать два экспортируемых метода.
X++:
using System;

namespace TestNetDll
{
    public class TestClass
    {
        public static int SumInt(int a, int b)
        {
            return a + b;
        }

        public static int MultInt(int a, int b)
        {
            return a * b;
        }
    }
}
3.Компилируем проект.
4.Теперь полученную dll можно использовать в управляемых приложениях. Но нам нужно получить доступ к dll из неуправляемого приложения, а в C# нет синтаксических конструкций для подобного объявления. Зато в IL есть. Поэтому, нужно дизассемблировать полученную dll выполнив в командной строке visual studio
X++:
Ildasm c:\prodjectPath\TestNetDll.dll out:c:\prodjectPath\TestNetDll.il
5.Открываем текстовым редактором полученный файл TestNetDll.il
6.Находим метод SumInt и добавлем в него сразу после открывающей фигурной скобки следующие строки
X++:
.vtentry 1:1
.export [1] as sumInt
где, .vtentry НомерТаблицыЭкспортируемыхФункций:НомерЭкспортируемойФункции
.export [НомерЭкспортируемойФункции] as НазваниеЭкспортируемойФункции
7.В методе MultInt вставляем
X++:
.vtentry 1:2
.export [2] as sumInt
7.Сохраняем изменения.
8.Компилируем
X++:
Ilasm c:\ProjectPath\TestNetDll.il /dll /out:c:\ProjectPath\TestNetDll.dll
9.Пример использования в Axapta
X++:
static void Job(Args _args)
{
    DLL         dll;
    DLLFunction dllFunction;
    int res;
    ;
    dll = new Dll(@"c:\ProjectPath\TestNetDll.dll");
    dllFunction = new DllFunction(dll, "MultInt");
    dllFunction.arg(ExtTypes::Word, ExtTypes::Word);
    dllFunction.returns(ExtTypes::Word);
    res = dllFunction.call(5, 10);
    info(int2str(res));
}
This post has been rated by: if_maks (1), belugin (5), Logger (5), Ace of Database (3), Ar (1), arhat (1).
Tags
dll, visual studio, интеграция, ax3.0

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
axStart: Programming against a DLL. Blog bot DAX Blogs 2 28.03.2008 12:56
склонение ФИО и использование dll библиотеки NetBus DAX: Программирование 11 23.10.2007 14:00
Client Axapta 3.0 SP4 и Linux. Как запустить? Daiver DAX: Администрирование 10 28.06.2007 15:59
Axapta Lessons: Axapta DLLs Blog bot DAX Blogs 0 28.10.2006 18:22
при вызове функции из своей DLL, вылетает ошибка Delfins DAX: Программирование 9 07.03.2006 19:29
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 21:27.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.