Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Создание dll в dev-C++


Автор: kerser 2.4.2008, 01:04
Не получается вызвать функцию из dll. Ошибка такая -   [Linker error] undefined reference to `_Z4funcv@0'.
Подскажите, пожалуйста, что не так делаю.
Функция в dll:
Код

double func()
 {
  double r=2.2222;
  return r;
 }

В заголовочном файле dll:
__declspec(dllexport) double __stdcall func();
В def-файле, который создается автоматически:
Код

; dlltool --base-file C:\DOCUME~1\Sergey\LOCALS~1\Temp/cca02264.base --output-exp KerSerg.exp --dllname KerSerg.dll --output-def libKerSerg.def --no-export-all-symbols --add-stdcall-alias --exclude-symbol=DllMainCRTStartup@12 --def C:\DOCUME~1\Sergey\LOCALS~1\Temp/cca02264.def --output-lib libKerSerg.a
EXPORTS
    _Z4funcv@0 @ 1
    _Z4funcv = _Z4funcv@0 @ 2

Среда разработки - dev-C++.

Автор: Andrey44 2.4.2008, 07:27
Подключи свой длл заголовочник
#include "твойДлл.h"
#pragma comment( lib, "твойДлл.lib")

Автор: kerser 2.4.2008, 15:26
Проект dll состоит из 3-х файлов:
KerSerg.cpp
KerSerg.h
libKerSerg.def
Длл заголовочник подключен в KerSerg.cpp и в windows-приложении.
А вот насчет "твойДлл.lib" - его нет, есть только libKerSerg.def и libKerSerg.a.
Или как его можно создать?

Автор: archimed7592 3.4.2008, 23:32
В случае с Dev-C++(а точнее GCC) прагма не поможет... Как и .lib файл.

kerser, где-то в настройках проекта нужно указать, что при сборке должна использоваться такая-то библиотека(я надеюсь эта библиотека тем же Dev-C++ делается?).

Добавлено через 1 минуту и 13 секунд
Цитата(kerser @  2.4.2008,  15:26 Найти цитируемый пост)
и libKerSerg.a.

Учти, что в настройках нужно будет указать либо KerSerg(без lib и .a), либо -lKerSerg(если прописывать это напрямую ключиком).

Автор: kerser 4.4.2008, 00:44
Да, действительно получилось. В параметрах проекта добавил libKerSerg.a. Спасибо за помощь.
 ! 
archimed7592
Не забываем пользоваться кнопкой "вопрос решён" или соответствующей галочкой в форме ответа.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)