C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Подключение DLL, Когда компилю без пакетов — ошибка
Schumi
Отправлено: 21.11.2003, 19:48


Машинист паровоза

Группа: Участник
Сообщений: 206



У меня создана DLL. Есть такая проблема. Когда компилю прогу с пакетами,всё — ок. Как-только автономно,без пакетов.То доходит до функции,описанной в dll.А при вызове,говорит,что ошибка по адреса в dll или "Invalid pointer operation".
Объясните,в чём дело.

Заголовочный файл dll: условно dll.h

CODE

#if defined(BUILD_DLL)
# define DLL_EXP __declspec(dllexport)
#else
# if defined(BUILD_APP)
# define DLL_EXP __declspec(dllimport)
# else
# define DLL_EXP
# endif
#endif
typedef AnsiString AS;
DLL_EXP void CreateBakFile(AS FileName);


CPP-файл библиотеки: (dll.cpp)
CODE

#define BUILD_DLL
#include <vcl.h>
#include "dll.h"
#include <windows.h>
#pragma hdrstop
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
   return 1;
}
void CreateBakFile(AS FileName)
{
..аля-улю...
}


А в Prog.cpp пишу:
CODE

#define BUILD_APP
...
//и где-то делаю:
CreateBakFile("autoexec.bat")


P.S: в проге подсоединяю dll.lib и/или memmgr.lib(и в dll также).
Наличие отладочной информации не влияет.Опции dinamic..RTL отключена.
Георгий
Отправлено: 21.11.2003, 23:48


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



QUOTE
void CreateBakFile(AS FileName)
{
..аля-улю...
}

попробуй сделать передать char* вместо AnsiString
CODE
void CreateBakFile(const char* FileName)

а то все эти VCL мне доверия не внушают...

Вернуться в Вопросы программирования в C++Builder