Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2012, 11:29
wormworm вне форума Посмотреть профиль Отправить личное сообщение для wormworm Найти все сообщения от wormworm
  № 1  
Ответить с цитированием
wormworm

Регистрация: Feb 2012
Сообщений: 2
По умолчанию Не подключается DLL через Zinc

Я уже совершенно не врубаюсь! Написал самую простую программу и ничего не работает! Помогите пожалуйста, буду очень признателен!
Вот код DLL:
Цитата:
#define _DLLMAINCPP

#include "stdafx.h"
#pragma hdrstop

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

#include <string>
#include <iostream>
using namespace std;

bool GetConfPNG(){return true;}
Видите? Одна простейшая функция...

Код AS2:
Код AS1/AS2:
stop();
var dllPath:String = "mydll.dll";
 
btn.onRelease = function()
{
	StartBtn = !StartBtn
 
	if(StartBtn == true)
	{
		var mydll = new mdm.DLL(dllPath)
		if (!mydll.isLoaded) 
		{
			out.text = "Dll load failed!"
			mdm.prompt("Dll load failed!")
		}
		else 
		{
			out.text = "Dll loaded!"
			mdm.prompt("Dll loaded!")
		}
 
		mydll.clear();
		var myReturn = mydll.call("boolean", "GetConfPNG")
		out.text += newline + "myReturn = " + myReturn
	}
	else
	{
		out.text = ""
	}
}
При компиляции в mdm Zinc подключаю mdm_dll. По нажатию кнопки получаю:
Цитата:
Dll loaded!
myReturn = null
Меняю var dllPath:String = "mydll.dll"; на какой-нибудь "bla-bla.dll" результат тот же! Dll loaded! Да как? ее не существует! Где мой true? Помогите пожалуйста!

P.S.: Функция объявлена на Экспорт в mydll.h, но и extern "C" __declspec(dllexport)bool GetConfPNG(){return true;} не меняет ситуации.


Последний раз редактировалось wormworm; 22.02.2012 в 12:16.
Старый 22.02.2012, 14:18
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
http://www.multidmedia.com/support/l...C2%ACclass=DLL

А откуда там isLoaded? Если вместо него undefined, то в условии получится !undefined == !false == true.
__________________
тонкий тролль, осеянный благодатью

Старый 22.02.2012, 14:25
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 3  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
1) isLoaded = true говорит о двух вещах: файл длл имеет место быть по указанному пути и это действительно длл, а не что-то там еще (имеется в виду формат бинарника). Впрочем, точно уже не вспомню, но что-то в этом роде.
2) цинк не обрабатывает ошибку, когда он не может найти в загруженной длл вызываемую функцию по имени, будет просто тишина. Что у вас и видно.
3) чтобы функция была видна для цинка (и не только), ее нужно объявить как экспортируемую, например, так:
Код:
extern "C" __declspec(dllexport) bool GetConfPNG(){return true;}
4) приведенный вариант объявления экспортируемой функции не единственный, об этом можно почитать в хелпах по С/С++-dll. Я не уверен, что другие варианты будут работать именно с цинком. Во всяком случае, официально разработчиками цинка рекомендован именно такой вариант.
4) само-собой, речь идет о компиляции длл в MSVC++.
ЗЫ. Gaen, это типа недокументированная фича).


Последний раз редактировалось alexcon314; 22.02.2012 в 14:31.
Старый 24.02.2012, 09:47
wormworm вне форума Посмотреть профиль Отправить личное сообщение для wormworm Найти все сообщения от wormworm
  № 4  
Ответить с цитированием
wormworm

Регистрация: Feb 2012
Сообщений: 2
Как я уже уточнял в P.S. "extern "C" __declspec(dllexport) bool GetConfPNG(){return true;}" не помогает.
Компилирую в MVSC++ 2005 для mdm.Zinc 3.0 c 8-ой весией плеера.

Попробовал воспроизвести пример: http://www.flasher.ru/forum/showthread.php?t=148789
Цитата:
Сообщение от выводит:
3570432
3569792
null
GVR
тоже null. Ерунда какая-то! Может это из-за того, что у меня и 3-я и 4-ая версии мдм стоят?


Последний раз редактировалось mooncar; 24.02.2012 в 12:36.
Старый 24.02.2012, 13:08
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 5  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Да, что-то я проглядел ваше дополнение, сори.
Судя по выводу примера, функции из длл отрабатывают. (GVR - это же ваш логин в системе?).
Возможно, просто затык с возвращаемым типом bool. int, char* работают ведь. Третий цинк я как следует не использовал, но припоминаю какие-то проблемы в этом роде были.
Пример этот, кстати, проверялся мной еще на втором цинке. Там все работало без проблем.
Думаю, что все-таки это косяк цинка третьей версии.


Последний раз редактировалось alexcon314; 24.02.2012 в 13:21.
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.