Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

импорт функций из DLL

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> импорт функций из DLL
Имя
Сообщение << Старые топики   Новые топики >>
импорт функций из 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 я не понимаю, а хочу понимать что делаю. Так что помогите дописать пргу чтобы работала, но и за помощь ссылками буду признателен. Заранее благодарен.
Post #: 1
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)
не нужны

Post #: 2
RE: импорт функций из DLL - 2008-03-10 11:41:06.783333   
Dgedit

Сообщений: 131
Оценки: 0
Присоединился: 2007-02-04 15:07:37.163333
Конечно извините мою безграмотность, а где ее подключить. Как я понял из поиска в настройках проекта надо указать линкеру подключить .lib файл к проекту который использует мою DLL, но я пробовал, прописывал путь, но постоянно выскакивает ошибка что такой файл не существует.
И если не трудно лучше дайте ссылку где это все подробно описано?? Хотелось бы самому разобратсья?
Post #: 3
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")
Post #: 4
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 файлу. Результат один и тот же не могу открыть файл.
Post #: 5
RE: импорт функций из DLL - 2008-03-10 21:33:36.400000   
vvviperrr

Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
ты либу где держишь? кинь ее в папку с проектом, а длл - в папку релиз к примеру, потом просто пишешь либо в прагме, либо в свойстве инпут линкера имя твоей либы, без путей.
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> импорт функций из DLL







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.