![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Командор Норрингтон |
![]()
Сообщение
#1
|
Madman ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 477 Регистрация: 28-August 06 Из: Planet Earth Пользователь №: 4,052 ![]() |
Я на VB6, и Delphi...
А вы на чём? |
![]() ![]() |
Warship |
![]()
Сообщение
#2
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
Нужна помощь по простому вопросу.
У меня есть динамически линкуемая DLL, которая грузится в приложение и в которой есть экспортируемая функция SomeTestFunc (имя абстрактное, как и везде далее), которая возвращает указатель на первый элемент массива байт. Так вот. При подгрузке этой Dll в приложение и попытке вывести на консоль массив, на который указывает указатель, оно ничего не выводит (указатель явно != null), при том, что из самой Длл значение по тому-же указателю выводится правильно. Пробовал менять на целочисленное (т.е. возвращался не указатель) - с ним все проходило нормально. Речь идет о C++, компилится под MinGW. У меня сейчас вот такой код: Длл (опуская ненужные инклуды и хедер): Код EXPORT char* SomeTestFunc(char* _data) { char* retDataPtr; char retData[] = "1234567890"; retDataPtr = &retData[0]; printf("retDataPtr: %s.\n", retDataPtr); // Вывод "1234567890" return retDataPtr; } BOOL APIENTRY DllMain(HINSTANCE _instance, DWORD _reason, LPVOID _reserved) { return TRUE; } Где EXPORT: Код #define EXPORT extern "C" __declspec (dllexport) И код приложения, юзающего Длл: Код typedef char* (*ImportFunc)(char *); /// Точка входа в приложение. int main() { ImportFunc testFunc; HINSTANCE myDll = LoadLibrary("MyDLL.dll"); if(myDll == NULL) { printf("ERROR: unable to load DLL!"); return 1; } testFunc = (ImportFunc) GetProcAddress(myDll, "SomeTestFunc"); if(testFunc == NULL) { printf("ERROR: unable to find DLL function!"); return 1; } printf("Result: %s.\n", testFunc("")); // Ничего не выводит FreeLibrary(myDll); return 0; } Отсюда, собсно, вопрос: почему у меня в приложении юзая Длл ничего не выводитcя? Буду рад любым подсказкам. ![]() |
![]() ![]() |
Текстовая версия | Сейчас: 13th September 2025 - 01:39 |