· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› unresolved external symbol _InitCustomControls@4

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Май 31, 2004 21:21:55

Пожалуйста помогите!
Почему MASM выдает ошибку unresolved external symbol _InitCustomControls@4

InitCustomControls включена в библиотеку core.lib, правда в аттач она не влезла (ограничение 50 кб)

_1253668003__error.rar


Дата: Май 31, 2004 21:26:08

:)

invoke InitCustomControls,hInst

Ты откуда сие выкопал-то? Функция воидная ведь :)
Бачишь?
void InitCommonControls(VOID);


Дата: Май 31, 2004 21:26:41

И вообще, постеснялся бы такие вопросы задавать!


Дата: Май 31, 2004 21:36:36

А причем здесь InitCommonControls?
Проблема в InitCustomControls


Дата: Май 31, 2004 22:15:28

Ой, виноват.
А откуда ты сие нашел? В MSDN упоминания о чуде сием нет!


Дата: Май 31, 2004 22:22:46

SDK для 3D Studio MAX - решил попробовать написать плагин для этой программы на асме.

Может скинуть core.lib аттачами по кускам?

Я так понял, что MASM пытается искать _InitCustomControls@4, но почему?


Дата: Май 31, 2004 22:26:37

MASM пытается найти функцию, принимающую один параметр, как это видно из исходника. Кидать порубленую lib сюда смысла не имеет. Покажи командную строку линкера для сборки твоего проекта.


Дата: Май 31, 2004 22:38:06

C:\masm32\Bin\ML /c /coff /Cp /nologo /I"C:\masm32\Include" "c:\WinAsm\Plugins for max\test.asm"

C:\masm32\Bin\Link /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:\masm32\Lib" /DLL /DEF:"c:\WinAsm\Plugins for max\test.def" "c:\WinAsm\Plugins for max\test.obj"


Дата: Май 31, 2004 22:48:22

Не вижу аттача core.lib. В LIBPATH прописан лишь путь к масмовским dll, где загоняется сама core.lib и где путь к ней? Пропиши.


Дата: Май 31, 2004 23:05:52

Все та же ошибка.

Помоему в core.lib функция вообще называется InitCustomControls@@YAXPAUHINSTANCE__@@@Z


Дата: Май 31, 2004 23:13:49

Ага. А вот это называется "замангление имен" в С++. Видно, придется этот вопрос в FAQ загнать.


Дата: Май 31, 2004 23:44:01

Почитай FAQ, я там написал. В твоем случае тебе придется прямо звать InitCustomControls@@YAXPAUHINSTANCE__@@@Z. Занятие для мазохистов, но выбора у тебя нет.


Дата: Июн 1, 2004 00:08:54

Все равно выдает ошибку!
Может я не правильно определил имя?


Дата: Июн 1, 2004 00:23:16

Может быть. Там много проблем.
Ты меня заинтересовал.
Убедись, что ты в точности узнал имя и забецай его сюда.


Дата: Июн 1, 2004 00:34:39

Значит так. Чего я тут надумал.
Даю идеи.
1) Мы должны узнать какие параметры нужны функции. Для этого мы должны разманглить ее имя (или посмотреть в документацию). Разманглить имя просто. Надо заюзать undname. Вот так:
undname ??0bad_cast@@QAE@ABQBD@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation 1981-2001. All rights reserved.

Undecoration of :- "??0bad_cast@@QAE@ABQBD@Z"
is :- "public: __thiscall bad_cast::bad_cast(char const * const &)"


2) Определить прототип функции в файле через PROTO.
Типа:

??0bad_cast@@QAE@ABQBD@Z PROTO C arg1:PCHAR, arg2:PCHAR

3) Написать прямо в файле в нужном месте:

invoke ??0bad_cast@@QAE@ABQBD@Z чего-то там, что надо.

В С такая фича не прокатывает, т.к. имя, содержащее "?" или "@" валидным не является. Как это побороть, я не знаю.
На асме у ml имя выше возмущения не вызвало. Попробуй, может повезет.

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.073