Как прицепить .dll библиотеку,написаннную изначально на масме, в VC++ и использовать функции этой библиотеки?
Код (Text): HINSTANCE hInst = LoadLibrary("Name.dll"); DWORD addr = GetProcAddress(hInst, "NameFunction"); потом что-то типа: Код (Text): DWORD (stdcall *)(char *, DWORD, WORD) FUNC; FUNC func1 = FUNC(addr); Насчет этого лучше смотри <windowsx.h> там есть HANDLE_MSG(...), реализованный как макрос - там написано правильно. И теперь можно вызывать func1 как обычную функцию: Код (Text): char * str; DWORD num; WORD ret; DWORD a = func1(str, num, ret);
я в гугле нарыл,но у меня так ничего и не получилось...вроде-бы надо создавать какой-то включаемый файл, обьявить функции внешими Код (Text): #ifdef MYDLL_EXPORTS #define MYDLL_API __declspec(dllexport) #else #define MYDLL_API __declspec(dllimport) #endif // Переменная extern MYDLL_API int Var; // Функция MYDLL_API void Function(int, int); // Класс class MYDLL_API Class { private: int a; public: Class(); ~Class(); int GetA(); void SetA(int _a=0); virtual void VirtualFunc(); static void StaticFunc(); static int StaticVar; };
Если у тебя функция, то например так: extern "C" void __stdcall foo(int, char); если переменная то например: extern int a;
Не совсем понял что нужно автору, заюзать ф-цию экспортируемую некой длл ? Если lib файла нет, то так как писал AndreyMust19 Только я обычно делаю так: typedef BOOL(__stdcall *PENTRYCALLBACK)(PENTRY pEntry,PCHAR pcRealPath); PENTRYCALLBACK pCallbaclk = (PENTRYCALLBACK)GetProcAddress(GetModuleHandleA("Name.dll"),"FuncName"); pCallback(var1, var2); Если lib есть, то надо обьявить примерно так extern "C" int __cdecl Function(DWORD var1, DWORD var2); или extern "C" int __stdcall Function(DWORD var1, DWORD var2); тут уж надо знать как собрана либа...
блин это ж я для примера) тебе там твою ф-цию с твоими параметрами надо. вместо дворда можешь написать unsigned int
подключите заголовочный файл windows.h допустим, некая библитека экспортирует функцию test_proc конвенция - cdecl, она принимает 2 параметра типа int. и возвращяет int Тогда в исходном файле на си надо её объявить так: Код (Text): #ifdef __cplusplus ;; на случай, если это цпп-компилятор. extern "C" { #endif int __declspec(dllimport) test_proc(int a, int b); #ifdef __cplusplus }; #endif Разумеется, надо также подключить библиотеку импорта.