kuttiylajai Ответов: 2

Устаревший строительный кодекс в 64


Я пытался создать устаревший код в Visual Studio 2008 для x64. Когда я строю, я столкнулся с ситуацией, когда мне нужно построить библиотеку. Это библиотечный проект, и в нем есть класс, а также файл с некоторыми 10 -15 функциями. Когда библиотека построена в 32-битной версии, то есть WIN32, все в порядке. Но когда он построен в x64, функции из класса экспортируются там, где функция из файла не экспортируется. Может ли кто-нибудь подсказать мне, что может быть не так?

заранее спасибо
Аджай

Что я уже пробовал:

я использовал dumpbin, чтобы подтвердить, что функции класса c++ экспортируются. В том же самом я не мог видеть ни одной функции из другого экспортируемого файла.

2 Ответов

Рейтинг:
4

Richard MacCutchan

Правила точно такие же, будь то 32 или 64 бит; см. Создание и использование динамических библиотек (с++)[^]. Проверьте настройки вашего проекта, чтобы убедиться, что вы правильно помечаете различные функции для экспорта.


Рейтинг:
18

KarstenK

Вы должны глубоко заглянуть в код этих классов. Я предполагаю, что есть некоторые охраняющие макросы, которые активируют экспорт win32, который не определен в настройках x64.
Например, WIN32 не определен, но некоторые WIN64. Это сложно: взгляните также на настройки проекта компилятора.

Совет: используйте Visual Studio 2010, он имеет лучшую поддержку x64. Я переименовываю файл проекта в *2010, чтобы иметь копию для VS 2010 и резервную копию для VS 2008.