импорт функций из DLL
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
импорт функций из DLL - 2008-03-09 17:12:03.053333
|
|
|
Dgedit
Сообщений: 131
Оценки: 0
Присоединился: 2007-02-04 15:07:37.163333
|
Потребовалось написать DLL, но при импорте из нее функций возникают проблемы. Сама DLL(она пробная) состоит из 2 файлов где описаны две функции. В заголовочном файле (DllForHook.h): —————————————————- #define MYLIBAPI extern "C" _declspec(dllexport) MYLIBAPI int fnLib(); MYLIBAPI int fnLib2(); —————————————————- В исходнике DLL (*.cpp) —————————————————- #include "DllForHook.h" int fnLib() { return 12; } int fnLib2() { return 13; } ————————————————— И собственно сам файл в который импортируются функции: ————————————————————– #include <windows.h> #include "resource.h" #include "D:\\..\..\..DllForHook.h" #define MYLIBAPI _declspec(dllimport) int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpCmdLine, int) { int x = 0; x = fnLib(); x +=10; x = fnLib2(); return 1; } ——————————————————————– Код программы смысла никакого не имеет на него не смотрите. При компиляции выводится такая ошибка: inject.obj : error LNK2001: unresolved external symbol _fnLib2 inject.obj : error LNK2001: unresolved external symbol _fnLib Подскажите что делать. Ч вроде нашел в поиске инфу что надо и к линкеру подключить LIB файл, но там описано все довольно скудно и я не смог ничего сделать. Я понимаю что в моем случае все просто делается просто я сам в этом деле "чайник". Но хотел бы попросить если кто решит помочь лучше дать ссылку на то где можно прочитать и хорошо разобраться вообще в работе компилятора. Так как например я вот понял что надо в текст DLL вписать #define MYLIBAPI extern "C" _declspec(dllexport) а что такое _declspec я не понимаю, а хочу понимать что делаю. Так что помогите дописать пргу чтобы работала, но и за помощь ссылками буду признателен. Заранее благодарен.
|
|
|
RE: импорт функций из DLL - 2008-03-10 08:07:05.926666
|
|
|
nixo
Сообщений: 213
Оценки: 0
Присоединился: 2006-06-25 20:22:26
|
а в настройках проекта добавляешь эту дллку? в студии кроме этого больше ничего делать не надо и эти строки #include "D:\\..\..\..DllForHook.h" #define MYLIBAPI _declspec(dllimport) не нужны
|
|
|
RE: импорт функций из DLL - 2008-03-10 11:41:06.783333
|
|
|
Dgedit
Сообщений: 131
Оценки: 0
Присоединился: 2007-02-04 15:07:37.163333
|
Конечно извините мою безграмотность, а где ее подключить. Как я понял из поиска в настройках проекта надо указать линкеру подключить .lib файл к проекту который использует мою DLL, но я пробовал, прописывал путь, но постоянно выскакивает ошибка что такой файл не существует. И если не трудно лучше дайте ссылку где это все подробно описано?? Хотелось бы самому разобратсья?
|
|
|
RE: импорт функций из DLL - 2008-03-10 20:06:05.226666
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
#pragma comment( lib, "my_lib.lib")
|
|
|
RE: импорт функций из DLL - 2008-03-10 21:25:14.266666
|
|
|
Dgedit
Сообщений: 131
Оценки: 0
Присоединился: 2007-02-04 15:07:37.163333
|
Ктстаи я не указал пишу я в Microsoft Visual C++ 6.0. Спасибо vvviper'у за помощь но я пробовал так и получаю ответ LINK : fatal error LNK1104: cannot open file *.lib. Я не совсем понимаю, вот я написал DLL скомпилировал ее получил сам файл *.dll и соответсвенно *.lib файл для того чтобы при линковании другого проекта который использует эту dll он мог связать функции которые будут импортироваться. Вот я как ни пробовал прилинковать этот *.lib файл к своему проекту все время получаю ошибку которую я указал что такого файла не найдено. Я пробовал его подсоединить при линковании и с помощью #pragma пробовал и в свойствах проекта на вкладке *.lib прописать путь к моему *.lib файлу. Результат один и тот же не могу открыть файл.
|
|
|
RE: импорт функций из DLL - 2008-03-10 21:33:36.400000
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
ты либу где держишь? кинь ее в папку с проектом, а длл - в папку релиз к примеру, потом просто пишешь либо в прагме, либо в свойстве инпут линкера имя твоей либы, без путей.
|
|
|
|
|