Проблема с DLL (VisualC+++6 / Builder)
От: IPC_Xenon  
Дата: 11.08.04 18:40
Оценка:
Народ, помогите пожалуйста. Возникла проблемка. Имееются 2 файла (скачал из инета): cpp и h, а также DLL'ка откомпилированная по этим 2-м файлам в Builder'е (ф-ции по работе с Excel). Использую DLL и эти исходники в своем проекте на VC++6, все работает нормально. Но я хочу переделать немного исходники (организовать все в виде класса). Но появилась проблемка: компилирую эти 2 файла в DLL в VC++6 (без каких-либо изменений), компилируется без проблем, но когда я пытаюсь подменить DLL оригинальную откомпилированой, то у меня начинает ругаться (при запуске моего приложения). Попадает в errorMessage с кодом: "Не найдена указанная процедура". Код:
// Header ExcelDLL.h ------------------------------------------------------- 
#define _DLL_EXCEL_EXPORT_ 
 
#ifndef _DLL_EXCEL_EXPORT_  
#define _EXCEL_DLL_ __declspec(dllimport) 
#else 
#define _EXCEL_DLL_ __declspec(dllexport) 
#endif 
//--------------------------------------- 
//Установка цвета ячеек 
  bool _EXCEL_DLL_ SetColor (char *Cells,XlColorIndex Color); 
  typedef bool (*pSetColor)( char *Cells,XlColorIndex Color); 
  extern pSetColor XlSetColor; 
//Установка границы ячеек 
  bool _EXCEL_DLL_ SetCellsBorder(. . .); 
  typedef bool (*pSetCellsBorder)(. . .); 
  extern pSetCellsBorder XlSetCellsBorder; 
//Запуск Excel 
  bool _EXCEL_DLL_ RunExcel(); 
  typedef bool (*pRunExcel)(); 
  extern pRunExcel XlRunExcel; 
//Создать новую книгу, выбрать первый лист 
  bool _EXCEL_DLL_ NewBook(); 
  typedef bool (*pNewBook)(); 
  extern pNewBook XlNewBook; 
... 
 
// Source ExcelDLL.cpp -------------------------------------------------------------- 
... 
bool LoadLib(char * Path) 
{ 
   ExcelDLL=LoadLibrary(Path); //Под отладчиком здесь все нормально 
   if (!ExcelDLL) 
   { ErrorMessage(); return false; } 
   XlSetColor=(pSetColor)GetProcAddress(ExcelDLL,"SetColor"); // !!! Под отладчиком = 0 
   if(SetColor)                                               //и попадаем на ошибку 
   { ErrorMessage(); FreeLibrary(ExcelDLL); ExcelDLL=NULL; return false;} 
   XlSetCellsBorder=(pSetCellsBorder)GetProcAddress(ExcelDLL,"SetCellsBorder"); 
...

Подскажите че не так?! Может VC++ как-то обзывает немного по-другому ф-ции (типа добавляет '__'), но это вряд ли...
Заранее благодарен, с уважением Александр.

12.08.04 15:21: Перенесено модератором из 'C/C++' — WolfHound
Исправлено форматирование. -- ПК
20.10.04 19:42: Перенесено модератором из 'Средства разработки' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.