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

Экспорт функции DLL - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разработка класса для реализации различных видов сортировки символов в строке http://www.cyberforum.ru/cpp/thread1849389.html
Здравствуйте. Нужна помощь по реализации проекта по ООП. Может кто-то уже сталкивался с подобными задачами и может поделится своими мыслями(примерами) о данном типе задач. Буду благодарен за любую помощь. Задача: Разработка класса для реализации различных видов сортировки символов в строке (выбором, пузырьком, перестановкой) на языке программирования Visual С++. Можно просто помочь с...
C++ Пульсометр выдает рандомные значения Доброго времени суток, я пытаюсь усовершенствовать алгоритм для сенсора пульса (характеристики тут: https://www.maximintegrated.com/en/design/reference-design-center/system-board/6300.html/tb_tab0 ) Предложенный разработчиками алгоритм выдает значения от -999 до 500 при малейшем шевелении пальца, достичь более или менее постоянных значений крайне сложно. Можете подсказать, что нужно... http://www.cyberforum.ru/cpp/thread1849070.html
Communicating with USB modem in Android Xamarin
I can find my usb with this code! But how to send at commands to the modem? Please help!!! int pr_ID, vn_ID; pr_ID = vn_ID = 0; if (manager.DeviceList.Count != 0) { foreach (UsbDevice device1 in manager.DeviceList.Values) { view.Text = "Manufaturer Name= " +...
C++ Вызвать функцию из dll с неопределённым числом параметров
Нужно вызвать из dll функцию с неопределённым числом параметров. пока что работаю с таким вызовом char res; char (*dll) (char* ...); dll = (char (*)(char* ...))GetProcAddress(hlib, "alfa"); res=dll("abc"); cout << res << endl; Функция DLL просто возвращает значение обратно
C++ Вычисление суммы чисел, от параллельных процессов MPI http://www.cyberforum.ru/cpp/thread1847629.html
Задача такая, запускаются параллельно 5 процессов, каждый из них генерит рандомное число и отправляет соседнему процессу, нужно вывести сумму всех этих чисел. Вот что получилось #include <mpi.h> #include <stdio.h> #include <iostream> int rank, size; //int spisok1={0}; int *spisok1 = new int;
C++ Не работает рекурсивная функция У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число, означающее, за сколько ходов туда можно добраться из начальных координат. Если в if приписать && n<3, то она работает, но в маленьком радиусе, если больше тройки число поставить, то уже не работает, никак не могу понять, в чем дело. void search(int x, int y, int n) ... подробнее

Показать сообщение отдельно
Фабелойс
0 / 0 / 0
Регистрация: 08.08.2016
Сообщений: 14
13.11.2016, 23:58     Экспорт функции DLL
Вечер добрый.
Работаю над проектом, в котором из DLL экспортируются функции для другого проекта. Столкнулся с проблемой, что сначала была VC 2010, и все работало. Потом поставил VС 2015 Community и не работает экспорт, как я понимаю.

Вот код DLL:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DLLALIVE_API char * GetName(void)
{
    char * temp = "Alive";
    char * pName = new char[10];
    int i = 0;
    for ( ; i < 5; ++i)
    {
        pName[i] = temp[i];
    }
    pName[i] = '\0';
    return pName;
}
DLLALIVE_API BaseFactory * GetFactory(void)
{
    AliveFactory * Factory = new AliveFactory;
    return Factory;
}
А это подгруз в основном проекте:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
typedef BaseFactory* (*GetFactory)(void);
    typedef char* (*GetName)(void);
 
    GetFactory pFnGetFactory;
    GetName pFnGetName;
 
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    HMODULE hMod;
 
    hFind = FindFirstFile(_T("*.dll"), &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE)
    {
        cout << "DLL not found" << endl;
    }
    else
    {
        do
        {
            bool check=true;
            hMod = LoadLibrary(FindFileData.cFileName);
            if (hMod == NULL)
            {
                cout << "Cannot load library " << FindFileData.cFileName << endl;
            }
 
            pFnGetFactory = (GetFactory)GetProcAddress(hMod, "GetFactory");
            if (pFnGetFactory == NULL)
            {
                cout << "Cannot load function GetFactory" << endl;
                check = false;
            }
 
            pFnGetName = (GetName)GetProcAddress(hMod, "GetName");
            if (pFnGetName == NULL)
            {
                cout << "Cannot load function GetName" << endl;
                cout << (char*)pFnGetName();
                check = false;
            }
            if (check)
            {
                AddCategory(pFnGetFactory(), pFnGetName());
            }
        } 
        while (FindNextFile(hFind, &FindFileData) != 0);
    }
    FindClose(hFind);
При дебаге выдает, что как раз pFnGetFactory и pFnGetName равны нулю. Подскажите, в чем проблема. Может ли это быть еще из-за того,ч то изначально код писал на Вин32, а сейчас на Вин64?

Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru