powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов функции из DLL
20 сообщений из 45, страница 2 из 2
Вызов функции из DLL
    #33551842
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_БалтикаДолжна быть все таки какая-то утилита типа dumpbin.exe и в Борланде.
Если нет, то можно поэксперементировать с LoadLibrary и GetProcAddress что бы докопаться до имени ф-ции.

Через GetProcAddress я ее достаю :)
А хочется неявно....
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551847
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дед МакарА хочется неявно....забей, раз хедер неподходит :)

ну можно еще повертеть опции компилятора ...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551852
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мона все-таки обяву ф-ции в студию?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551907
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_БалтикаМона все-таки обяву ф-ции в студию?

BASS_Init - это то что я называл myFunc :)

#define BASSDEF(f) (WINAPI *f) // define the functions as pointers

#ifdef WIN32
BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
#else
BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, void *dsguid);
#endif
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551923
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нам скажут твои BASSDEF ??? приведи описание
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551938
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас БарабасЧто нам скажут твои BASSDEF ??? приведи описание
Posted via ActualForum NNTP Server 1.3

ну как же, я же написал выше:
#define BASSDEF(f) (WINAPI *f) // define the functions as pointers
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551947
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дед Макар#define BASSDEF(f) (WINAPI *f) // define the functions as pointersтьфу :)) куда я смотрел ?:))
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33551984
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем ситуация такая. Еслия делаю явно то у меня все работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
//cpp
void __fastcall TForm1::Button1Click(TObject *Sender)
{

HINSTANCE bass=LoadLibrary("BASS.DLL"); // load BASS
//BASS_Init=GetProcAddress(bass,"BASS_Init"); // get BASS_Init
*((void**)&BASS_Init)=GetProcAddress(bass,"BASS_Init");
//BASS_Init(-1,44100,0,hWnd,NULL); // call BASS_Init

}
//---------------------------------------------------------------------------

//h
#define BASSDEF(f) (WINAPI *f) // define the functions as pointers
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
    TButton *Button1;
    void __fastcall Button1Click(TObject *Sender);
private:	// User declarations
public:		// User declarations
    __fastcall TForm1(TComponent* Owner);

    BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Как мне это все провернуть неявно?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552108
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть так значит:
Код: plaintext
1.
BOOL (WINAPI *BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
WINAPI не забываешь? Или у тебя по умолчанию __stdcall?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552173
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_БалтикаТо есть так значит:
Код: plaintext
1.
BOOL (WINAPI *BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
WINAPI не забываешь? Или у тебя по умолчанию __stdcall?

опять? :) Я ж писал выше в тексте

#define BASSDEF(f) (WINAPI *f)
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552253
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дед Макар
опять? :) Я ж писал выше в тексте

#define BASSDEF(f) (WINAPI *f)
Я имел ввиду при импорте
__declspec(dllimport) BOOL WINAPI ...
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552272
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Балтика дед Макар
опять? :) Я ж писал выше в тексте

#define BASSDEF(f) (WINAPI *f)
Я имел ввиду при импорте
__declspec(dllimport) BOOL WINAPI ...

А... когда неявно пытаюсь? Конечно же есть. и получаю unresolved...
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552287
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хедер не подходит, обратись к разработчикам
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552319
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я загружаю ее явно - то он очень даже подходит....
Или есть какие-то нюансы при создании dll для подключения ее явно/неявно?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33552324
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это 100% говорит о том, что компилятор подставляет в имена функций свои служебные символы. Покрути настройки компилятора
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33553407
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
extern "C" {
#include "bibl.h"  // шло вместе с библиотекой
}
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33554075
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlсделай вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
extern "C" {
#include "bibl.h"  // шло вместе с библиотекой
}


Unresolved external.....
Может я че не так делаю изначально? Может кто нибудь объяснить по шагам этапы неявного подключения сторонней библиотеки(начиная с "запустить билдер" и заканчивая "нажать F9") ?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33559341
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) возьми любую утилиту показывающую имена экспортируемых функций. Например depends.exe из состава VC или соотвествующий плагин к Фару. Посмотри как выглядят имена экспортируемых функций. Или даже impdef который есть и в BC, но с ним сложнее, надо уметь читать def файлы тогда :)
2) Если имена выглядит как "SomeFunction" то используй implib /a my.lib my.dll Если "_SomeFunction", то implib my.lib my.dll
3) В заголовочном файле должно быть описание функции такого вида:
int SomeFunction(int x, int y, char *s);
этого хватает! При большом желании можно добавлять всяческие extern или __declspec(dllimport), но на самом деле они для BC не нужны.
4) В списке линковки указываешь my.lib как обычную библиотеку и все.
5) Если пишешь на С++, то не забудь имена импортируемых функций в заголовке указать как С. Для этого, либо каждую функцию помечаешь как extern "C" (синтаксис тебе уже показывали), либо все функции разом:
Код: plaintext
1.
2.
3.
4.
extern "C" {
  int DllFunc1(int x, int y);
  char *DllFunc2(char *s);
  // и так далее
}

Никаких def файлов тебе не нужно, никаких declspec(dllimport) тоже.
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33560766
учусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно привести алгоритм для VC++.
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #33561613
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, но лениво :)
Ищи, здесь на форуме описывалось неоднократно.
Вот, в качестве рабочего примера, делал когда-то... как использовать dll из BC в VC
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов функции из DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]