Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 08.10.2009, 14:48   #1
>=VeNoM=<
 
Регистрация: 08.10.2009
Сообщений: 7
Плохо Вопросец по DLL Static Link

Всем привет!

Недавно столкнулся с проблемой, вообще-то не новой, но решить никак не могу. У меня есть ДЛЛ-ка, хочется ее прикрутить статически к программе. И не работает. Вот коды

Файл библиотеки(Project1.cpp):
Код:
#include <windows.h>
#pragma hdrstop
#pragma argsused
extern "C" __declspec(dllimport) _stdcall int Addition(int a, int b)
{
        return a+b;
}
 
extern "C" __declspec(dllimport) _stdcall int Substraction (int a, int b)
{
    return a-b;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
        return 1;
}
Заголовочный файл(Project1.h):
Код:
#pragma comment(lib, "Project1.lib")
int Addition(int a, int b);
int Substraction(int a, int b);
Код самой программы:
Код:
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
#include <tchar.h>
#include "Project1.h"
#include <iostream.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
        int a=Addition(1,2);
        cout << a;
        return 0;
}
//---------------------------------------------------------------------------
Либу прикрутил, компиляция проходит, а на этапе линковки пишет:
[ILINK32 Error] Error: Unresolved external 'Addition(int, int)' referenced from C:\12\DEBUG\FILE2.OBJ

Помогите, пожалуйста. 5 дней пытаюсь прилинковать, гоогле перерыл, ничего не нашел...(((
Жизнь надо прожить так, чтобы другим неповадно было!
>=VeNoM=< вне форума Ответить с цитированием
Старый 08.10.2009, 16:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Судя по всему ДЛЛ линкуется без этих функций.
Видимо ты неправльно Header описал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2009, 16:37   #3
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,997
По умолчанию

programmersforum.ru/showthread.php?t=38078
ds.Dante вне форума Ответить с цитированием
Старый 08.10.2009, 17:02   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от >=VeNoM=<
Код:
extern "C" __declspec(dllimport) _stdcall int Addition(int a, int b)
{
        return a+b;
}
 
extern "C" __declspec(dllimport) _stdcall int Substraction (int a, int b)
{
    return a-b;
}
Код:
int Addition(int a, int b);
int Substraction(int a, int b);
Судя по всему неправильное описание в хидере. Вероятно должно быть вот так?
Код:
int _stdcall Addition(int a, int b);
int _stdcall Substraction(int a, int b);
netrino вне форума Ответить с цитированием
Старый 08.10.2009, 17:19   #5
pproger
C++ hater
СуперМодератор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

и еще, зачем в хидере твоей библиотеки подключать ее же??
Код:
#pragma comment(lib, "Project1.lib")
int Addition(int a, int b);
int Substraction(int a, int b);
ужос, чо твориццо
pproger вне форума Ответить с цитированием
Старый 08.10.2009, 17:25   #6
>=VeNoM=<
 
Регистрация: 08.10.2009
Сообщений: 7
По умолчанию

Всем спасибо за помощь, ошибка была в коде библиотеки: атрибут __declspec(dllimport) -> __declspec(dllexport). Ну и естессно, в заголовочном файле немного коррекции внести надо было.
Жизнь надо прожить так, чтобы другим неповадно было!
>=VeNoM=< вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Static члены assasin Общие вопросы C/C++ 2 21.08.2009 09:54
По-поводу Static volnixx PHP 3 11.03.2009 12:04


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840