Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка при установки VS2010 http://www.cyberforum.ru/cpp/thread690053.html
У меня не работает Visual Studio 2010. По каким причинам - не знаю. Все начинается с установки вс ультимэйт 2010. Оно вроде бы устанавливается все ок. Но под конец вылетает окно "The application data floder for Visual Studio could not be created" после установка продолжается. И вс нормально запускается. Но когда я ввел какой-то элементарный код - он не работает. Выбивает окно: "не удается...
C++ Компьютерный тренажер Может у кого завалялась курсовая или диплом по созданию компьютерного тренажера на С++, киньте пожалуста. Очень буду благодарен. http://www.cyberforum.ru/cpp/thread689535.html
C++ Новичок программировании GUI приложений
Здравствуйте. Посоветуйте, что лучше для начинающего в программировании GUI приложений, изучать библиотеки (WinAPI или т.п) или программирование в RAD системе?
C++ Изменение значения private поля в c++
При желании такое можно провернуть в c# (ну только естественно не на уровне объекта). Поэтому и возник такой вопрос. Ощущение что подобное возможно только в дин. языках. В общем быстрый гуглинг ничего не дал.
C++ Сборка библиотеки и ошибка "fatal error LNK1149: имя выходного файла совпадает с именем входного файла" http://www.cyberforum.ru/cpp/thread688341.html
при сборке библиотеки возникает такая ошибка LINK : fatal error LNK1149: имя выходного файла совпадает с именем входного файла, объясните что не так.
C++ Программирование неуправляемого кода для 64 разрядных систем Windows Долго мучился. Код начал работать, когда я применил типы Uint32 и UintPtr. Причем UintPtr пришлось применять для всех указателей, где раньше я применял Int32. Может быть есть у кого еще опыт? подробнее

Показать сообщение отдельно
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,423

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

10.11.2012, 12:19. Просмотров 681. Ответов 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 )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru