|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 27, 2003 03:44:46 Манглингом мы обязаны Страуструпу, который переложил дикую часть нагрузки на компилятор. Хотя, подозреваю, ты просто шутишь. Ну не можешь ты не знать таких вещей :) |
|
|
Дата: Июл 27, 2003 06:18:56 Ээээ... Я имел в виду несовместимость между обычным для STDCALL "_" + "@N" и вижуальным мусором вроде ?garbage@@YGHPAUHWND__@@PBD1I@Z. А про Страуструпа я действительно не знал... Пора признаваться что я тоже не программер по профессии ;) |
|
|
Дата: Июл 27, 2003 17:42:20 Это не мусор. Как отличать виртуальные функции, как отличать перегрузку и т.д., и т.п.? Что до не программера, ха, забавно :) Значит, тезка, мы товарищи :) |
|
|
Дата: Июл 27, 2003 18:48:57 Это не мусор. Разве!? Моя функция "garbage()" была объявлена так: int __stdcall garbage( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);Обзывая это дело ?garbage@@YGHPAUHWND__@@PBD1I@Z, вижуал просто умничает. Значит, тезка, мы товарищи :) Эт точно! |
|
|
Дата: Июл 28, 2003 13:24:29 > Обзывая это дело ?garbage@@YGHPAUHWND__@@PBD1I@Z, вижуал просто умничает Нет, не умничает - просто фалик был наверняка с расширением .cpp вот все имена и исказились =) Сделай файлу .c расширение или опиши функцию как extern "C" int __stdcall garbage(...) и получишь стандартное искажение - будет _garbage@16 |
|
|
Дата: Июл 28, 2003 18:43:35 Dr.Golova Преклоняюсь перед истинным гением! ЗЫ: Я раньше пробовал просто extern "C" int garbage() и получал _garbage, а дописать __stdcall ума не хватило :) |
|
|
Дата: Июл 30, 2003 10:33:31 · Поправил: masquer Я когда привязываю stdcall masm-a к проекту на VC в хедере так пишу: extern "C" bool __stdcall Foo(char *, OutPutStruc *); на асме так .model flat, stdcall ... Foo proc p1, p2 ret Foo endp Вот эта "C" и делает деманглинг - в МСДН про это написано. |
|
|
Дата: Июл 30, 2003 17:36:01 Пробовали... Пробовали... Ни фига не получилось! |
|
|
Дата: Июл 30, 2003 18:40:01 Не может быть! У меня всё работает после добавления __stdcall. Пробовал с тем форвардом с Hi на MessageBoxA. Может сорсы выслать? |
|
|
Дата: Июл 30, 2003 19:22:18 |
|
|
Дата: Июл 30, 2003 20:53:10 У меня задымилась крыша! Вот ты пишешь:
#include "stdafx.h"
extern "C" int __stdcall Hi(int, char*, char*, int);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
Hi(0,"Lya-Lya-Lya", "Test", 0);
return 0;
}
А в def-файле у тебя: EXPORTS Hi = User32.MessageBoxA @2 NONAME Ну и кто сошел с ума? |
|
|
Дата: Июл 30, 2003 21:15:40 Ты имеешь в виду NONAME? Так я ж уже писал что символ Hi удаляется из DLL, но не из LIB. ЗЫ: Tandem felix! |
|
|
Дата: Июл 30, 2003 21:27:42 · Поправил: volodya Да мать за ногу, что ж такое. Не могу скомпилировать. Твой проект могу, этот нет. Код один-в-один. И валится! extern "C" int __stdcall Hi(int, char*, char*, int); //error C2059: syntax error : 'string' Ну, если честно, то не совсем один-в-один. Вместо стандартного заголовка я положил #define WIN32_LEAN_AND_MEAN #include <windows.h> и создал пустой проект. |
|
|
Дата: Июл 30, 2003 21:41:55 · Поправил: volodya Меня сейчас колотить начнет. Или я комп колотить начну. Файл: #include "stdafx.h"
extern "C" int __stdcall Hi(int, char*, char*, int);
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
В stdafx.h: #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> Мой файл:
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdio.h>
extern "C" int __stdcall Hi(int, char*, char*, int); //не пропускает!
int main(void)
{
Hi(0,"Lya-Lya-Lya", "Test", 0);
return 0;
}
Мне плохо :(((( И даже командная строка одинакова! Что я уж только не делал... |
|
|
Дата: Июл 30, 2003 21:47:46 · Поправил: volodya П%№;"дец!!! Я не понимаю, как ты его собрал. Когда сольешь 2003 - попробуй собрать под ней. Я не могу. Причем ТВОЙ проект собирается с песней и на ура. Слушай, ты бы не мог переписать с масма на С? Я хочу все попробовать на чистом С. А то у меня даже инклудов нет :( Да, и что бы было, если убрать NONAME? Я НИ Х....... НЕ ПОНИМАЮ!!!! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.038 |