Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > нулевой указатель на функцию |
Автор: bent 5.5.2006, 15:36 | ||
Здравствуйте. В программу (на Microsoft Visual C++) подключаю библиотеку, разработанную в Borland C++ Builder. Библиотека подключается, но вот адреса на функции получить не удается (нужные мне функции ЭКСПОРТИРУЕМЫЕ, все названия, возвращаемый тип и список параметров СОВПАДАЮТ - это проверено!). Может, существует какое-то преобразование имен функций из Borland в Visual C (ну там подчеркивание добавляется или регистр меняется), которое я упустил? Кстати, экспериментировал, перед названием функции (да и после него) ставил одинарное, двойное подчеркивание, менял регистр - без результата. Вот отрывок кода:
Еще раз подчеркну, что библиотека загружается (ElxDll != NULL) и в коде библиотеки название функции InitData, функция принимает два параметра типа int и выдает результат типа int. Вот такая проблема... ![]() |
Автор: LuckLess 5.5.2006, 15:57 |
bent, добавь к функций ( как в борланде так и в микросове) extern "C" Добавлено @ 15:57 это предотвратит искажение имен |
Автор: Fazil6 5.5.2006, 15:58 | ||
для того, чтобы 100% уверенным в названиях функций добавь в проект библиотеки def файл, где указываются имена под которыми функции должны быть доступны из библиотеки (правда никогда из билдера так не делал, а только из VC) вот например
в MSDN посмотри по поводу def файла. Хотя на моей памяти я не сталкивался чтобы Билдер коверкал имена. Покажи объявление функции в самой библиотеке. |
Автор: bsa 5.5.2006, 20:05 |
Где-то сталкивался с тем, что необходимо было указывать подчеркивание перед именем функции (или наоборот - оно мешало ее достать иб библиотеки). Еще интересно, как ты экспортировал. Должно быть примерно так: extern "C" SOMETYPE __stdcall __export Function(LIST_OF_ARGS); |
Автор: bent 6.5.2006, 14:09 | ||||
1. Объявление функции в библиотеке:
2. Попробую заменить это на
Спасибо! |