Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: Aleksandr N
Дата сообщения: 26.12.2012 11:36
Привет уважаемые знатоки "С".
Опять я со своими дурацкими вопросами.
В этот раз в корне иной вопрос.
Решил попробовать из чего растут 64-битные программы на Delphi. Загвоздка в использовании в коде OBJ файлов, которые откомпилированы как 32-битные. Оказалось что получить 64-битные OBJ файла можно на MVS. В некоторых исходниках на "С" авторы положили батник для компиляции. Например:

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64
del PPMd.obj
rem cl /c /Zi /nologo /W3 /WX- /O2 /Ob1 /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_WARNINGS" /D "WIN64" /GF /Gm- /MD /GS- /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Gd /errorReport:queue PPMd.cpp
cl /Zi /nologo /Zp1 /GS- /Gy /Gd PPMD.cpp

НО
если я просто запускаю этот батник, то ругается на неизвестную команду "cl" и т.д.. Если делаю проект на MVS, то, естественно, Delphi говорит что файлы OBJ имеют неправильный формат.

Отсюда вопрос:
Вероятно батником нужно как-то по-другому пользоваться, научите, или научите какие опции нужно выставить в проекте MVS чтобы OBJ принимались Delphi.

Спасибо.
Автор: ItsJustMe
Дата сообщения: 26.12.2012 18:05
Using C object files with Delphi
Автор: Aleksandr N
Дата сообщения: 26.12.2012 23:50
ItsJustMe
Этот пример я находил, но откомпилировав OBJ по аналогии с примером (выставил все опции), а Delphi опять говорит, что не тот формат...
Автор: V0lt
Дата сообщения: 28.12.2012 08:35
Хотелось бы уточнить один момент.

ZeroMemory() обнуляет блок памяти. Но если этот блок памяти далее не используется, то компилятор может не обнулить его в целях оптимизации.

SecureZeroMemory()
обнуляет блок памяти всегда.

Я все правильно понял?
Автор: bomzzz
Дата сообщения: 28.12.2012 08:57
из того что написано вроде следует только что вторая функция только более безопасная.


Цитата:
If ZeroMemory were called in this example instead of SecureZeroMemory, the compiler could optimize the call because the szPassword buffer is not read from before it goes out of scope. The password would remain on the application stack where it could be captured in a crash dump or probed by a malicious application.


какой то дамп чистится и стек, что гарантирует что данные будут полностью удалены - что играет роль если это пароль
то есть я так понял - если тебе нужно просто обнулить блокпамяти пользуйся первой, а если уничтожить данные без возможности восстановления второй
Автор: V0lt
Дата сообщения: 28.12.2012 09:55
bomzzz

Цитата:
если тебе нужно просто обнулить блокпамяти пользуйся первой, а если уничтожить данные без возможности восстановления второй

Спасибо. Я тоже так понял, но некоторые считают иначе.
Автор: bomzzz
Дата сообщения: 28.12.2012 10:18
http://habrahabr.ru/company/abbyy/blog/127259/
вот что то приличное вроде нагуглилось. ни разу этой функцией не пользовался
Автор: kotlomoy
Дата сообщения: 28.12.2012 20:50
V0lt

Цитата:
Спасибо. Я тоже так понял, но некоторые считают иначе.

Не нашел по ссылке иначе-считающих
Автор: VladimirMagus
Дата сообщения: 10.01.2013 00:17
Помогите пожалуйста, разобраться, отчего не выполняется ввод строки в функции.
При вызове функции вне switch/case всё выполняется так, как надо.
Не пинайте за возможно глупый вопрос, я только учусь.

[more=подробнее]
Код: #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>

void readstr(char*);

void main()
{
    int i, nom;
    char *stro=new char[30];
    setlocale(LC_CTYPE, "Russian");
    i=1;

while(i)
{
    puts("1-enter\n2-print\nany-exit\n\n");
    scanf_s("%d",&nom);
    switch(nom)
    {
    case 1:
        readstr(stro);
        break;
    case 2:
        printf("%s\n",stro);
        break;
    default:
        i=0;
    }
}

_getch();
}

void readstr(char* st)
{
    printf("Enter any string\n");
    scanf_s(st);
}


--------------------------------------
Colored with http://dumpz.org
Автор: V0lt
Дата сообщения: 10.01.2013 07:43
kotlomoy

Цитата:
Не нашел по ссылке иначе-считающих

Ну ведь XhmikosR зачем-то сделал глобальную замену ZeroMemory() на SecureMemoryCopy(). Паролей там уж точно не было.
Автор: Abs62
Дата сообщения: 10.01.2013 07:48
VladimirMagus

Цитата:
При вызове функции вне switch/case всё выполняется так, как надо.

Код "scanf_s(st)" что в switch/case, что вне его, нормально работать не может.
Будь там что-то вроде "scanf_s("%s",st,30)" - работало бы.
Автор: VladimirMagus
Дата сообщения: 10.01.2013 18:56
Abs62
Большое спасибо, все работает именно так, как надо.
Так получилось, что официально считается, будто я изучаю С, но лекции и слайды - смесь С и С++, вот такая чехорда.
Автор: kotlomoy
Дата сообщения: 10.01.2013 20:17
V0lt

Цитата:
Ну ведь XhmikosR зачем-то сделал глобальную замену ZeroMemory() на SecureMemoryCopy()

С XhmikosR'ом все понятно вроде из обсуждения )
Автор: bomzzz
Дата сообщения: 11.01.2013 21:52
никто не знает случайно как при перехвате инжектированием CTRL ALT DEL зарегистрировать на winlogon.exe дополнительные горячие клавиши?

http://forum.antichat.ru/thread302521.html
вот тут якобы рабочий пример нашел но что то нифига не получается
Автор: bomzzz
Дата сообщения: 13.01.2013 00:26
чтоб зарегистрировать горячую клавишу на окно winlogon надо использовать дополнительный мод MOD_SAS=8000h. без него система выдает ошибку неправильный хендл 1400. сообщение окно получает без этого мода.

на античате само собой лажа написана


никто не знает какая привелегия должна быть чтоб открыть десктоп винлогона?
Автор: haungan
Дата сообщения: 17.01.2013 04:05
не сюда
Автор: AZJIO
Дата сообщения: 18.01.2013 13:36
Привет.
Хотел научится С++, всвязи с этим вопросы:
1. Какую луше выбрать среду (Выбрал Dev-Cpp)
2. Какой лучше пользоваться справкой (скачал много, но везде размыто, мне лучше по принципу "имя функции, назначение, пример кода")
3. Есть ли типа сборки программной среды настроенной под себя?
4. Обучающие примеры исходников.
Автор: roumor
Дата сообщения: 19.01.2013 00:08
1. Какую луше выбрать среду (Выбрал Dev-Cpp)
qt creator http://qt-project.org/

2. Какой лучше пользоваться справкой (скачал много, но везде размыто, мне лучше по принципу "имя функции, назначение, пример кода")
гугл - лучшая справка.
Автор: kotlomoy
Дата сообщения: 19.01.2013 04:42
AZJIO

Цитата:
1. Какую луше выбрать среду (Выбрал Dev-Cpp)

Dec-Cpp не пробовал. Из того, что пробовал, альтернатив Microsoft Visual Studio с плагинами пока не вижу. Разве что Eclipse еще можно попробовать.
Если в будущем предполагается работа программистом, то тогда тем более лучше осваивать Visual Studio - наиболее распространенный стандарт.

А Qt Creator еще сыроват, судя по тому, что там на текущий момент еще подсветка синтаксиса не доделана.
Автор: roumor
Дата сообщения: 19.01.2013 07:38
А Qt Creator еще сыроват, судя по тому, что там на текущий момент еще подсветка синтаксиса не доделана.

сыроват? не доделана? разработчикам сообщите на всякий случай, а то они не в курсе.
Автор: blaro
Дата сообщения: 19.01.2013 11:42
AZJIO
Скачай Turbo C++. Самый лучший вариант для тебя. Легкий, быстрый, подсветка синтаксиса есть. Правда без плагинов.
Автор: adasiko
Дата сообщения: 19.01.2013 11:53

Цитата:
Turbo C++, Dev-Cpp

некромантия - вещь не очень хорошая. Code::Blocks можно попробовать или wxDev-C++ (это развитие Dev-Cpp)
Ну и VS Studio Express - тож хороший вариант для обучения
Автор: blaro
Дата сообщения: 19.01.2013 13:27
adasiko

Цитата:
некромантия - вещь не очень хорошая.

Какая же это некромантия? Это винтаж.
Автор: AZJIO
Дата сообщения: 19.01.2013 18:40
Я на cyberforum вычитал, что лучше "wxDev-C++", сейчас его поставил. Подсветку [more=свою сделал блэк]
C:\Documents and Settings\<имя>\Application Data\Dev-Cpp\devcpp.ini

Цитата:
[Editor.Syntax]
Assembler=clYellow, $003F3F3F, 0, 0, 0
Character=clSilver, $003F3F3F, 0, 0, 0
Comment=$0071AE71, $003F3F3F, 0, 1, 0
Float=$00C738B9, $003F3F3F, 0, 0, 0
Hexadecimal=$00C738B9, $003F3F3F, 0, 0, 0
Identifier=$0072ADC0, clNone, 0, 0, 0
Illegal Char=clBlack, clNone, 0, 0, 0
Number=$00C738B9, $003F3F3F, 0, 0, 0
Octal=$00C738B9, $003F3F3F, 0, 0, 0
Preprocessor=$00F000FF, $003F3F3F, 0, 0, 0
Reserved Word=$00FF8000, $003F3F3F, 1, 0, 0
Space=clSilver, $003F3F3F, 0, 0, 0
String=$00999999, $003F3F3F, 0, 0, 0
Symbol=$008080FF, $003F3F3F, 0, 0, 0
Break points=-2147483633, 18305
Error Line=-2147483633, 3357666
Active Breakpoints=-2147483633, 10053222
Gutter=0, -2147483633
Selected text=12303291, 5789784
[/more]. Вот только не нравится мне после каждого теста 9 сек компилировать файл, так как привык в AutoIt по F5 сразу видеть результат. Случайно нет какой нибуть интерпретирующей утилиты, которая могла бы выполнить команды без компиляции? Хотя бы для примитивных тестов. Буквально изучение свойств выливается в ожидания...

kotlomoy

Цитата:
Из того, что пробовал, альтернатив Microsoft Visual Studio
она бесплатная?
Автор: bomzzz
Дата сообщения: 19.01.2013 18:49
никто не знает в чем дело может быть. сделал дллку на хп все нормально работает. а на семерке при выполнении GetProcAddress - acces denied ошибка №5. от имени администратора запускать программу пробовал.
Автор: Elevener
Дата сообщения: 19.01.2013 19:31
AZJIO
Если планируешь с С++ работать - лучше сразу выбирать IDE под которой обычно работают на платформе на которую ты нацелился (Visual Studio - есть бесплатная Express версия) под Win/MS. Скорее всего Eclipse если вообще вести речь про IDE до Unix/мультиплатформу. Переучиваться потом не сложно но не слишком приятно.
Автор: ItsJustMe
Дата сообщения: 19.01.2013 21:08
bomzzz
Так сразу не скажешь - слишком мало инфы. Лишь как КО могу отметить, что видимо в Win7 прога читает ту область памяти, куда доступа не имеет.
Автор: bomzzz
Дата сообщения: 19.01.2013 22:16
да у меня самого не много инфы. попросили сделать дллку. сделал простейшую для примера, передаешь ей два параметра она их складывает и возвращает. стали проверять - не работает. я зашел на тот комп ами админом, в натуре не работает, обработку ошибок добавил вернуло пятерку. у меня на хп все работает.
Автор: kotlomoy
Дата сообщения: 20.01.2013 02:01
roumor

Цитата:
сыроват? не доделана?

А что, уже можно глобальные переменные подсвечивать?
Автор: ItsJustMe
Дата сообщения: 20.01.2013 22:00
bomzzz
If the DLL is not very large and complicated you may publish it here. Someone, like me, may take a look at it.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.