Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Вызвать функцию в dll

Ответить
Настройки темы
C/C++ - Вызвать функцию в dll

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar mppc-1.0.rar
(7.1 Kb, 13 просмотров)
Нашел нужный инклуд файл для своей задачи, но в С знаний 0, поэтому прошу помощи. Класс в атаче, нужно сделать функцию в dll, в которой произойдет вызов функции из инклуда.
P.S Использую Code Blocks.

Отправлено: 18:25, 15-09-2013

 

Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


а вам так сильно нужна длл? а если функцию из инклуда переписать в сам файл с программой? тогда и длл не нужна.

Отправлено: 19:39, 15-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цель - использовать эту dll в программе написанной не на С.

Отправлено: 19:50, 15-09-2013 | #3


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


load32, покопавшись в нете, нашёл на мой взгляд, решение:

http://stackoverflow.com/questions/1...-in-codeblocks

по-русски:файл - новый - проект - консольной приложение - dll

Отправлено: 20:01, 15-09-2013 | #4


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Эм, dll я как бы еще в состоянии сделать, проблема с функцией из аттача.

Отправлено: 20:40, 15-09-2013 | #5

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


В чём конкретно проблема?
Если я правильно понял, самый надёжный способ - экспортировать функции как stdcall, без декораций (особенность gcc). В другой среде разработки сделать import lib на основании dll. На крайняк можно загрузить dll вручную.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:42, 15-09-2013 | #6


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Проблема в том, что я просто незнаю как правильно вписать в функцию вызов другой. Появляется много ошибок.
Код: Выделить весь код
#include "main.h"
#include "mppc.h"

// a sample exported function
int DLL_EXPORT SomeFunction(u_char **src, u_char **dst, u_long *srcCnt, u_long *dstCnt, char *history, int flags)
{
   return MPPC_Decompress(src, dst, srcCnt, dstCnt, history, flags);
}

extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            // attach to process
            // return FALSE to fail DLL load
            break;

        case DLL_PROCESS_DETACH:
            // detach from process
            break;

        case DLL_THREAD_ATTACH:
            // attach to thread
            break;

        case DLL_THREAD_DETACH:
            // detach from thread
            break;
    }
    return TRUE; // succesful
}
obj\Debug\main.o||In function `Z12SomeFunctionPPhS0_PmS1_Pci':|
undefined reference to `MPPC_Decompress(unsigned char**, unsigned char**, unsigned long*, unsigned long*, char*, int)'|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 4 seconds) ===|

Отправлено: 22:05, 15-09-2013 | #7

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


дык файлы из архива тоже надо включить в сборку (добавить в проект, проверить, не исключены ли они из сборки)
и ещё, если у тебя проект "C++", а не "C" сделай так вокруг include "mppc.h":
Код: Выделить весь код
extern "C" {
#include "mppc.h"
}
Ещё варианты:
1. переименуй *.c в *.cpp
2. не переименовывай, но сделай проект C, а не C++
объяснение ошибок линка кроется в различиях C и C++; здесь хорошо разъясняется: http://www.gamedev.ru/code/forum/?id=56367
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:59, 15-09-2013 | #8


Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я еще подозреваю что, то что мне нужно написано к *nix-у, можно ли это к винде приспособить?
А думаю я так потому что:
Код: Выделить весь код
#include <sys/param.h>
#include <sys/systm.h>
Мне главное получить рабочую функцию будь то объектник или dll, мне не важно.

Последний раз редактировалось load32, 16-09-2013 в 19:22.


Отправлено: 18:35, 16-09-2013 | #9

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


раз у тебя дошло дело до линковки, значит с инклюдами gcc как-то разобрался

Отправлено: 09:10, 17-09-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Вызвать функцию в dll

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите сбить перехватчиков c user32.dll, advapi32.dll, netapi.dll Pr0ga Лечение систем от вредоносных программ 3 26-06-2010 18:06
Для чего нужны dll библиотеки или Учимся редактировать dll Ban_vam_Dam Флейм 5 31-07-2009 17:41
C/C++ - [решено] Как в С вызвать функцию из Delphi библиотеки? mingw Программирование и базы данных 6 06-07-2009 10:11
Разное - [решено] dwmapi.dll; mpr.dll; shlwapi.dll Reset5 Microsoft Windows 2000/XP 2 14-06-2008 16:31
Разное - как вызвать функцию hhh8486 Программирование и базы данных 2 29-03-2008 13:17




 
Переход