Автор |
Сообщение |
cm_s
Зарегистрирован: 04.10.2011
Сообщения: 7
|
Добрый день!
Как в AmiBroker подключить внешнюю dll?
Сделана простая ClassLibrary1.dll
public class Class1
{
public double InvertValue( double value )
{
return -value;
}
}
Как в AmiBroker использовать функцию InvertValue()?
Помещаю ClassLibrary1.dll в AmiBroker\Plugins, но AmiBroker ее не видит в Tools -> Plug-ins... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
dll для Ами должна отвечать определённым требованиям - экспортировать 5 обязательных функций, функции должны возвращать значение типа AmiVar и т.д. Скачайте с официального сайта AmiBroker Development Kit, там всё написано. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Li2n
Зарегистрирован: 22.11.2012
Сообщения: 3
|
Прошу прощения за беспокойство.
Сделал и обучил нейросеть в Neurosolutions, входных параметров 39, выходной 1.
Скомпелировал dll в С++6.0.
А теперь не знаю как это все подключить к амиброкеру.
вот сама скомпилированая нейросеть. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Вирусня детектед |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Li2n
Зарегистрирован: 22.11.2012
Сообщения: 3
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не. К Ами dll делаются не так. Там написано как делать dll для метатрейдера.
Для Ами плагины делаются по другому совсем
http://amibroker.com/bin/ADK.exe
Этот плагин к ами никак не подключить. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Li2n
Зарегистрирован: 22.11.2012
Сообщения: 3
|
Совсем никак не прикрутить? Да же, через промежуточный DLL? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Через промежуточный - можно, конечно. Пишите плагин к АмиБрокеру, в нём создаёте функцию, которая будет вызывать другую функцию уже из этой вашей длл, передавать ей параметры, получать возвращаемый результат и т.д. В общем, геморрой тот ещё. Проще продублировать код этой нейросети прямо в плагине и работать с ним из Ами напрямую. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
А может кто-нибудь дать какой-нибудь работающий пример проекта плагина для Visual Studio 2010? В ADK примеры для Visual Studio 2008. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
BRTO писал(а): |
А может кто-нибудь дать какой-нибудь работающий пример проекта плагина для Visual Studio 2010? В ADK примеры для Visual Studio 2008. |
А какая разница? Открывайте его в 2010, он автоматически проапгрейдится. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
Mechanic писал(а): |
BRTO писал(а): |
А может кто-нибудь дать какой-нибудь работающий пример проекта плагина для Visual Studio 2010? В ADK примеры для Visual Studio 2008. |
А какая разница? Открывайте его в 2010, он автоматически проапгрейдится. |
Что-то не открывается, говорит про какие-то ошибки
Mechanic, если не затруднит, можно небольшую инструкцию по созданию плагинов? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
А что именно непонятно? Как создать проект в студии или как вообще устроена длл для Ами? Если второе, то отсылаю к АДК, там всё расписано. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
Mechanic писал(а): |
А что именно непонятно? Как создать проект в студии или как вообще устроена длл для Ами? Если второе, то отсылаю к АДК, там всё расписано. |
Действительно, разобрался
Но вот хорошо бы пример функции, принимающей строку - например, путь до файла |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Файл Functions.cpp:
Код: |
#include "stdafx.h"
#include "Plugin.h"
AmiVar MyString(int NumArgs, AmiVar *ArgsTable )
{
char * szString = ArgsTable[0].string;
AmiVar result;
result.type = VAR_STRING;
result.string = szString;
return result;
}
// ****************************************************************************************************
// ТАБЛИЦА ФУНКЦИЙ ПЛАГИНА
// ****************************************************************************************************
// в таблице перечисляются все функции, которые должны быть доступны из АмиБрокера в следующем формате:
// "FunctionName(tooltip, tooltip)", {FunctionPtr, <no. of array args>, <no. of string args>, <no. of float args>, <no. of default args>, <pointer to default values table float *>
FunctionTag gFunctionTable[] =
{
"MyString(some string)", {MyString, 0, 1, 0, 0, NULL}
};
int gFunctionTableSize = sizeof(gFunctionTable ) / sizeof(FunctionTag);
|
Функция ничего не делает, просто возвращает ту же строку, которую ей была передана в качестве аргумента. В гуру-комментарии пишите:
Код: |
MyString("blah-blah"); |
и в окне вывода это же и увидите. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
Mechanic
Огромное спасибо! Работает!
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|