extern "C" int __declspec(dllexport) SomeFunction(void)
{
return 0;
}
Потом смотрю tdump'ом, а там _SomeFunction, т.е. знак подчеркивания появляеся.
Ведь по идее должно быть просто SomeFunction. Как не крутился, не могу от него избавиться.
W>>Не подскажите, как быть?
G>И не избавишься. оно тебе надо . Просто вызывай как есть _Имя
Не могу, потому что вызываю не я, а та прога для которой плагин нужен, а ей подавай безо вских '_'
На самом деле можно исбаваиться, если в Options->Advanced compilation снять галку Generate undescores, но тогда перестают линковаться всякие нужные функци вроде memset, strcpy и пр. Что в лоб, что полбу, короче
Здравствуйте, William, Вы писали:
W>Привет всем
W>Пишу DLL, которая экспортирует функцию:
W>extern "C" int __declspec(dllexport) SomeFunction(void) W>{ W> return 0; W>}
W>Потом смотрю tdump'ом, а там _SomeFunction, т.е. знак подчеркивания появляеся. W>Ведь по идее должно быть просто SomeFunction. Как не крутился, не могу от него избавиться.
W>Не подскажите, как быть?
W>С уважением, Илья
А ты вписал ее в DEF файл?
Re: CBuilder и экспорт функций
От:
Аноним
Дата:
02.07.03 10:20
Оценка:
Здравствуйте, William, Вы писали:
W>Привет всем
W>Пишу DLL, которая экспортирует функцию:
W>extern "C" int __declspec(dllexport) SomeFunction(void) W>{ W> return 0; W>}
W>Потом смотрю tdump'ом, а там _SomeFunction, т.е. знак подчеркивания появляеся. W>Ведь по идее должно быть просто SomeFunction. Как не крутился, не могу от него избавиться.
W>Не подскажите, как быть?
W>С уважением, Илья
твоя функция поумолчанию объявляется как __cdecl, а для этого соглашения о вызове Builder добавляет к имени функции подчеркивание, чтобы избваиться можно объявить твою функцию как __stdcall, либо создать следующий def-файл
EXPORTS
SomeFunc = _SomeFunc
и прилинковать его к проекту DLL, после этого можете вызывать вашу функцию по оригинальному имени
А>твоя функция поумолчанию объявляется как __cdecl, а для этого соглашения о вызове Builder добавляет к имени функции подчеркивание, чтобы избваиться можно объявить твою функцию как __stdcall, либо создать следующий def-файл А>EXPORTS А>SomeFunc = _SomeFunc А>и прилинковать его к проекту DLL, после этого можете вызывать вашу функцию по оригинальному имени