Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как подключить DLL к проекту


Автор: Paradox 4.3.2003, 19:35
Хочу подключить длл к своему проекту. Скопировал Длл в c:\winnt\system32 , либ в директорию своего приложения . А что дальше ? Как инклудить ? Просто на визуале не приходилось такое делать.

Автор: Guest 4.3.2003, 19:48
Все делается довольно просто smile.gif
Код

// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from MYPUTS.DLL.

#include <stdio.h>
#include <windows.h>

typedef VOID (*MYPROC)(LPTSTR);

VOID main(VOID)
{
   HINSTANCE hinstLib;
   MYPROC ProcAdd;
   BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;

   // Get a handle to the DLL module.

   hinstLib = LoadLibrary("myputs");

   // If the handle is valid, try to get the function address.

   if (hinstLib != NULL)
   {
       ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");

       // If the function address is valid, call the function.

       if (fRunTimeLinkSuccess = (ProcAdd != NULL))
           (ProcAdd) ("message via DLL function\n");

       // Free the DLL module.

       fFreeResult = FreeLibrary(hinstLib);
   }

   // If unable to call the DLL function, use an alternative.

   if (! fRunTimeLinkSuccess)
       printf("message via alternative method\n");
}

Автор: dim 4.3.2003, 21:36
Теперь lib подключай либо в опциях линкера либо с помощью #pragma comment.

Автор: Paradox 11.3.2003, 16:08
Цитата
Теперь lib подключай либо в опциях линкера либо с помощью #pragma comment.

а где этот линкер в 7-ой студии или как исплользовать #pragma comment с названием моей длл и в какой файл вписывать (stdafx или нет)

Автор: valex13 11.3.2003, 21:15
Проще динамическое подкличение использовать. Это почти так же делается.
Вот пример:
m_hLibrary = LoadLibrary("MyDir");
//*********
typedef double(_stdcall *subr1)
(
int i,
int j
);
subr1 GetSolveData;
GetSolveData=(subr1)GetProcAddress(m_hLibrary,"_getsolvedata@8");
if(GetSolveData!=NULL)
{// Работает!
return(GetSolveData(M,P));
}
else
{
MessageBox(0,"Библиотека повреждена!","Ошибка",MB_OK+MB_ICONSTOP);
return(0);
}
Для Debug необходимо включить соответствующую опцию :
Project/Settings/Debug
Выбери Additional Dll и укажи путь к библиотеке.


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