Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

Использование DLL написанной на С++   Найти похожие ветки 

 
Ricko ©   (2004-11-25 16:47) [0]

Срочно понадобилось управлять микшером звуковой карты ECHO MIA. Управление стандартным микшером она (карта) обходит используя свою консоль управления. Нашел в инете пример на с++ . Так как я абсолютно не разбираюсь в с++ решил запихать основные функции в dll, а уж в своем приложении на Delphi их использовать. Но при передачи значения параметров функций в Delphi не соответствуют значениям параметрам в dll. Вместо них какой то мусор. Знатоки с++ укажите на ошибки.

bmix.cpp ->

#include <vcl.h>
#include "CSplunge.h"
#include "CSplungeList.h"
#pragma hdrstop
//----------
USEUNIT("CSplunge.cpp");
USEUNIT("CSplungeList.cpp");
//----------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
       return 1;
}
//----------

CSplungeList *pSplungeList;
CSplunge *pSplunge;

__declspec(dllexport) int InitMyMixer(void)
{
pSplungeList = new CSplungeList;
if (0 == pSplungeList->GetNumSplunges())
{
        delete pSplungeList;
        return 0;
}

pSplunge = pSplungeList->GetNthSplunge(0);
pSplunge->OpenDriver();
pSplunge->OpenMixer();

return 42;
}

__declspec(dllexport) int CloseMyMixer(void)
{
     delete pSplungeList;
return 0;
}

__declspec(dllexport) char *GetCardName(void)
{
if (pSplungeList)
{
   ECHOGALS_CAPS *pCaps = pSplunge->GetCaps();
          return pCaps->szName;
}
return "None";
}

__declspec(dllexport) int GetVolume(Word iBus0,Word iBus1)
{
        int iGain;
        ShowMessage("Input param> iBus0: "+IntToStr(iBus0)
                  +"iBus1: "+IntToStr(iBus1));
        pSplunge->GetMonitorGain(iBus0,iBus1,iGain);
        return iGain;
}

__declspec(dllexport) int GetMute(Word iBus0,Word iBus1)
{
        int iGain;
        ShowMessage("Input param> iBus0: "+IntToStr(iBus0)
                  +"iBus1: "+IntToStr(iBus1));
        pSplunge->GetMonitorMute(iBus0,iBus1,iGain);
        ShowMessage("Get mute: "+IntToStr(iGain));
        return iGain;
}

__declspec(dllexport) int SetVolume(Word iBus0,Word iBus1, int iGain)
{
        pSplunge->SetMonitorGain(iBus0,iBus1,iGain);
        return 0;
}

__declspec(dllexport) int SetMute(Word iBus0,Word iBus1, int iMute)
{
        BOOL b;
        ShowMessage("Set mute: "+IntToStr(iMute));
        if (iMute == 0)  b=false; else b=true;
        pSplunge->SetMonitorMute(iBus0,iBus1,b);
        return 0;
}


main.pas

var
 Form1: TForm1;

 function InitMyMixer : integer; external "bmix.dll" name "@InitMyMixer$qv";
 function CloseMyMixer : integer; external "bmix.dll" name "@CloseMyMixer$qv";

 function GetCardName : PChar; external "bmix.dll" name "@GetCardName$qv";

 function GetVolume(bus0,bus1:word):integer; external "bmix.dll" name "@GetVolume$qusus";
 function GetMute(bus0,bus1:word):integer; external "bmix.dll" name "@GetMute$qusus";

 function SetVolume(bus0,bus1:word;Gain:integer):integer; external "bmix.dll" name "@SetVolume$qususi";
 function SetMute(bus0,bus1:word; Mute:integer):integer; external "bmix.dll" name "@SetMute$qususi";


 
Digitman ©   (2004-11-25 16:56) [1]

соглашения о вызовах тобой явно нарушены.

не бурусь утверждать, но либо stdcall (наиболее вероятно) либо cdecl (менее вероятно)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.035 c
14-1101192348
NewDelpher
2004-11-23 09:45
2004.12.12
Есть ли защита от СМС-спама


14-1100855016
Ilya___
2004-11-19 12:03
2004.12.12
Подскажите пожалуйста. правильно ли я делаю?


3-1100083717
denis24
2004-11-10 13:48
2004.12.12
групировка по полю memo,обьекта OLE в запросе


1-1101726843
Sanya
2004-11-29 14:14
2004.12.12
Клавиатура vs Пользователя


3-1100082487
Pertovsky
2004-11-10 13:28
2004.12.12
Десятичные разряды.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский