Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
#1

нужна опция gcc, которая позволяет вызывать функцию точки входа в скомпилированной dll - C++

10.11.2012, 12:19. Просмотров 734. Ответов 0
Метки нет (Все метки)

Кропаю dll:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*A.cpp*/
#include <stdio.h>
#include <windows.h>
 
#ifdef BUILD_DLL
   // the dll exports
   #define EXPORT __declspec(dllexport)
#else
   // the exe imports
   #define EXPORT __declspec(dllimport)
#endif
 
 
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved )  
{
    // Выполняем действия, основанные на причине вызова.
    switch( fdwReason ) 
    { 
        case DLL_PROCESS_ATTACH: {
            MessageBox (0, "Я, A.dll загрузилась", "", 0); 
            printf     ("Я, A.dll загрузилась");
            break;
        }
        case DLL_PROCESS_DETACH: {
            MessageBox (0, "Я, A.dll выгрузилась", "", 0); 
            printf     ("Я, A.dll выгрузилась");
            break;
        }    
    }
    return TRUE; 
}
C++
1
2
g++ -c -DBUILD_DLL A.cpp
g++ -shared -o A.dll A.o
кропаю экзешник
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <windows.h>
#include <stdio.h>
 
 
 
int main ()
 
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 
      HMODULE DeskriptorModula;
 
      DeskriptorModula= LoadLibrary ((char*)"A.dll");
      if (DeskriptorModula) {
      
      printf ("DeskriptorModula= %x\n", DeskriptorModula);
      printf ("Смотри, вызвалась функция точки входа A.dll или нет\n");
      getchar ();
      
      FreeLibrary (DeskriptorModula);
      printf ("Ещё раз должна вызваться, по идее\n");
      getchar ();
      
      }
      
      else {     
      printf ("A.dll не загрузилась\n");
      getchar ();
      }
      
      return (0);
 
}
функция DllMain не вызывается. Когда я ставлю бряк в отладчике на DllMain, он срабатывать-то срабатывает (при FreeLibrary), но тоже никаких диагностических надписей не выводится, почему так? Может, опция gcc какая нужна? Спасибо, кто откликнется.

Добавлено через 13 часов 0 минут
Решилось
C++
1
2
extern "C"
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 12:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос нужна опция gcc, которая позволяет вызывать функцию точки входа в скомпилированной dll (C++):

Точка входа в процедуру _dbk_fcall_wraper не найдена в библиотеке DLL BORLNDMM.DLL - C++ Builder
При попытке скомпилировать файл выдает такую ошибку Точка входа в процедуру _dbk_fcall_wraper не найдена в библиотеке DLL BORLNDMM.DLL

Точка входа в процедуру InitializeConditionVariable не найдена в библиотеке DLL KERNEL32.dll - C++ WinAPI
Добрый день, товарищи! Помогите, пожалуйста, советом в решении следующией проблемы: Пытаюсь скомпилировать программу для дальнейшего...

определить функцию, которая позволяет распознавать числа-палиндромы - C++
Определить функцию, которая позволяет распознавать числа-палиндромы (вводится 6-значное число)

Список: Написать функцию, которая позволяет найти позитивную сумму элементов - C++
Задание : 1. Написать функцию, которая позволяет привести в порядок элемент в списке , что-бы первые были негативные , и после этого...

Как достать исходник из скомпилированной .dll? - C++
Как достать исходник из скомпилированной .dll? Возможно ли это вообще? Добавлено через 3 часа 49 минут ап-ап

Точка входа в процедуру InterlockedCompareExchange64 не найдена в библиотеке DLL KERNEL32.DLL - C++
День добрый! При запуске моей программы (много моего кода + много разных сторонних dll) на WinXP SP2, получаем соответствующую ошибку...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2012, 12:19
Привет! Вот еще темы с ответами:

Создать функцию, которая будет вызывать другую функцию - PHP
Доброго времени суток. Изучаю PHP и вот столкнулся с такой практикой, не знаю как реализовать. Первым делом нужно было создать функцию,...

Отсутствие точки входа DLL - Delphi
Написал небольшую библиотечку для 1С, но когда попытался ее зарегать в regsvr32 то получил вот такое послание &quot;Модуль &quot;genpass.dll&quot;...

Создание точки входа в DLL - C#
Знаю что нельзя. :-/ Но это не дает мне покоя, вручную вызывать какой-то метод инициализации в dll ке моя религия никак не позволит,...

Ошибка точки входа в dll - C++ Builder БД
кароч написал прогу по работе с БД...работает норм(но особо усиленно я её не тестил), но когда выхожу из билдера, то он выдаёт ошибку пока...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru