Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
16 / 16 / 0
Регистрация: 13.11.2009
Сообщений: 66
1

После компиляции dll в vc++ 2008 имя функции вот такое ?Add@MyMathFuncs@MathFuncs@@SA JJ@Z. Почему?

06.03.2011, 14:11. Просмотров 1162. Ответов 3
Метки нет (Все метки)

Я ожидал имя в dll Add@MyMathFuncs@MathFuncs
Но не такое ?Add@MyMathFuncs@MathFuncs@@SA JJ@Z
Вот код mydll.h и mydll.cpp:

in mydll.h
C++
1
2
3
4
5
6
7
8
9
10
extern "C" namespace MathFuncs 
{
    extern "C" class MyMathFuncs
    {
    public:
        // Returns a + b
    static __declspec(dllexport)  long Add( long a);
        
        };
}
in mydll.cpp
C++
1
2
3
4
extern "C" namespace MathFuncs
{
     long MyMathFuncs::Add( long a)
    {
Добавлено через 7 минут
Я делал и без extern "C". Но все равно то же самое билибирдовое имя.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2011, 14:11
Ответы с готовыми решениями:

VC++ 2008 как изменить свойства компиляции чтобы из exe была сделана dll?
Как сделать dll я знаю. А вот как пример (работающий) который компилиться как exe сделать dll? ...

почему в функции add не работает gets_s?
/* Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать...

После перепрошивки БИОС вот такое сообщение вылазит CMOS Checksum Bad
Всем привет. Несколько раз перепрошивал БИОС и после каждой перепрошивки после перезагрузки...

Вот такое вот кажется лёгкое задание но не как не могу решить.
задание 223(В,И)Картинки загружайте на форум, во избежание их удаления или потери на сторонних...

3
372 / 319 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 15:54 2
Почему так Формат внутреннего имени C++. Декорирование имен не стандартизировано. Каждый делает как хочет. И даже один и тот же в разных версия компиляторов может это делать по разному.
Решение - создать def-файл
LIBRARY "mydll"
EXPORTS
Add
1
16 / 16 / 0
Регистрация: 13.11.2009
Сообщений: 66
06.03.2011, 15:58  [ТС] 3
А можно по подробнее и понятнее расказать об этом?
Решение - создать def-файл
LIBRARY "mydll" - что это значит LIBRARY "mydll.cpp"? или LIBRARY "mydll.dll"
EXPORTS - где это писать в mydll.cpp или mydll.h?
Add
0
372 / 319 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
06.03.2011, 16:00 4
Файлы определения модуля (DEF)

Проект->Добавить новый элемент далее в окне Visual C++->Код->Файл определения модуля.
Создаем файл mylib.def и в нем пишем
LIBRARY "mylib.dll"
EXPORTS
Add
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2011, 16:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не вылазит черное окно консольного приложения после компиляции (Microsoft Visual C++ 2008)
Доброго времени суток! Только что поставил Microsoft Visual C++ 2008, код написал, скомпилировало,...

Что такое имя функции?
скажите пожалуйста что такое имя функции? создаю указатель на функцию #include...

asp - xml - vb dll - html вот такая вот компания и что с ней делать
как из асп создать хмл-файл, передающий информацию в vb-dll, там она анализируется и результат...

Большое количество .dll файлов после компиляции в проекте Debug/Release
В общем, после компиляции проекта в папке debug/release появляется большое количество .dll файлов...

Почему после компиляции не запускается программа ?
Доброго времени суток. Проблема следующая: программа тестирования обращается к xml-файлу. Без его...

Почему git add . и git add * это плохо? И как тогда быть?
Вопрос по гиту, почему git add . и git add * это плохо? и как тогда быть?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.