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

возвращаю указатель на строку пишет кракозяблы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Напишите, скомпилируйте и выполните программу, которая выводит перечень аргументов командной строки в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread835478.html
Задание Напишите, скомпилируйте и выполните программу, которая выводит перечень аргументов командной строки в обратном порядке. Доработайте программу так, чтобы второй цикл while выводил лесенку...
C++ Почему нельзя так объявить двумерный массив? Ошибка возникает если для массива tempArray при объявлении(и одновременной инициализации) использовать переменную(size) которую принимает функция. Если массив не инициализировать(или использовать при... http://www.cyberforum.ru/cpp-beginners/thread835458.html
C++ Проблемы с классами при поиске обратной матрицы
Доброго времени суток! Задача такова. Необходимо создать класс, который создавал бы матрицу заданного размера (квадратную), рассчитывал её определитель и находил обратную матрицу. Нашёл необходимые...
Элементарная графика (Dev C++) C++
Подскажите как поменять цвет(заливку, а не контур(линию)) квадрата (вписанного в окружность-вдруг это важно)с использованием graphics.h (среда- dev cpp)?
C++ Изменение части текста http://www.cyberforum.ru/cpp-beginners/thread835423.html
Здравствуйте, кто-нибудь знает с помощью какого инструмента в Windows Form Application (Label, TextBox и т.д.) можно обеспечить изменение цвета, или какое либо другое форматирование только части...
C++ Ошибка после закрытия формы Как можно избавиться от этой ошибки? подробнее

Показать сообщение отдельно
freeax
2 / 2 / 1
Регистрация: 19.09.2012
Сообщений: 136
15.04.2013, 11:44  [ТС]
Здравствуйте!
Решил выбросить код, который определяет модемы, в длл (MSVS 2010). При вызове функции из длл в ansi c выводит кракозяблы

Кликните здесь для просмотра всего текста

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
// stdafx.h
...
typedef struct {
   char name[1024];
   char port[6];
} ModemType, *pModemType;
...
#define MYAPI extern "C" __declspec(dllexport)
...
MYAPI int GetModems(ModemType *, unsigned int *);
 
// dll3.cpp
 
...
int GetModems(ModemType *pModems, unsigned int *num) {
    CTAPIApp app;
 
    app.InitModems();
    *num = app.m_modems.size();
 
    for (unsigned int i = 0; i < *num; i++) {
        OemToCharA(app.m_modems[i].m_lineName.c_str(), pModems->name);
        OemToCharA(app.m_modems[i].GetPort().c_str(), pModems->port);
        pModems++;
    }
 
    return (*num);
}


вызов си

Кликните здесь для просмотра всего текста

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
...
ModemType modems[1024];
pModemType pModems;
...
unsigned int num;
typedef int (__cdecl* PfnGetModems)(ModemType *, unsigned int *);
 
int main (int argc, char *argv[]) {  
 
    HINSTANCE hGetProcIDDLL = LoadLibrary("dll3.dll");
    if (hGetProcIDDLL == NULL) {
        MessageBox(NULL,"Error load dll","DLL Error",MB_OK | MB_ICONERROR);
        return EXIT_FAILURE;
    }
 
    PfnGetModems myDllGetModems = (PfnGetModems)GetProcAddress(hGetProcIDDLL, "GetModems"); 
 
    if (!myDllGetModems) {
        MessageBox(NULL,"Error load GetModems()","DLL Error",MB_OK | MB_ICONERROR);     
        return EXIT_FAILURE;
    }
 
    myDllGetModems(modems, &num);
    pModems = modems;   
    printf("%s - %s\n", pModems->name, pModems->port);
 
...


Подскажите где проблема
Заранее благодарен!

Для справки, unsigned int num возвращается как надо. А вот в pModems->name и pModems->port мусор какой-то
Подскажите пожалуйста!!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru