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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Распараллелить скалярное произведение векторов http://www.cyberforum.ru/cpp/thread692634.html
Задание - распараллелить скалярное произведение векторов. вектора vec1 и vec2 заполняются не рандомом для однозначности результата. в общем все работает,но препод впихнул симуляцию задержки 1го потока (в нашем случае который выполняет 10ую итерацию), и все накрывается. не знаю как это исправить (место обозначено (!!!)). пробывал поставить барьеры - не работает. как решить проблему? нельзя...
C++ Обходы графа Ребят, помогите с курсачом по Дискретной математике. Задача у меня такая: Имеется N городов, соединенных сетью дорог. Заданы длины участков дорог между парами городов. Спроектировать структуру телефонной сети с минимальной стоимостью затрат на ее строительство, если считать, что стоимость участка сети между двумя городами пропорциональна расстоянию между ними. Правильно ли я понимаю, если... http://www.cyberforum.ru/cpp/thread692073.html
Вычислить Минимальный элемент массива, сумму элементов между первым и последним положительными элементами C++
В одномерном массиве, состоящем из N действительных элементов, вычислить: 1) Минимальный элемент массива. 2) Сумму элементов массива, расположенных между первым и последним положительными элементами. Превратить массив таким образом, чтобы сначала располагались все элементы, равные нулю, а затем - остальные. В одновимірному масиві, що складається з N дійсних елементів, обчислити: ...
Преобразование и построение матриц C++
кто может объяснить все строчки !? #include <stdio.h> #include <math.h> #include <conio.h> #include <stdlib.h> #include <time.h> int main() {
C++ Обработка строк указателем http://www.cyberforum.ru/cpp/thread690289.html
Обработка строк при помощи указателей. Здравствуйте Помогите, пожалуйста, решить задачу. Для ввода строк использовать один и тот же символьный массив tmp.Обработку строк производить при помощи указателей внутри выделенного блока памяти. Запрещается использовать дополнительные массивы или блоки. Создать текстовую функцию main(), которая реализует след. алгоритм: 1. Объявить и ввести...
C++ Ошибка при установки VS2010 У меня не работает Visual Studio 2010. По каким причинам - не знаю. Все начинается с установки вс ультимэйт 2010. Оно вроде бы устанавливается все ок. Но под конец вылетает окно "The application data floder for Visual Studio could not be created" после установка продолжается. И вс нормально запускается. Но когда я ввел какой-то элементарный код - он не работает. Выбивает окно: "не удается... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304

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

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