Как скомпилировать 64-битную версию моей DLL? - PullRequest
0 голосов
/ 21 июля 2009

Вероятно, глупый вопрос: у меня 32-битный рабочий стол WinXP, который я использую для компиляции (32-битной) библиотеки DLL с Visual Studio 2005 / Intel COmpiler 10.1. Я хотел бы создать 64-битную версию моей DLL. Как это сделать? Ответы, связанные с Visual Studio, интересны, но те, которые касаются компиляции Intel, получают дополнительные очки.

Заранее спасибо.

ALex

Ответы [ 3 ]

1 голос
/ 21 июля 2009

Это небольшое руководство, которое я сделал, состоит в том, чтобы сделать компиляцию VC ++ 2005 Express 64-битной с использованием последней версии PSDK (хотя я не уверен, насколько хорошо это работает)

Полагаю, у вас уже есть VC ++ 2005 Express и PSDK, и вы активировали сборку приложений Win32 в VC ++ и работали с 64-битной Windows (ну, возможно, она работает и в 32-битных окнах, но exe не будет работать в этой среде)

1) Пуск -> Все программы -> Microsoft Platform SDK для Windows Server 2003 с пакетом обновления 1 (SP1) -> 64-разрядная среда сборки Windows XP -> Настройка среды сборки Windows XP x64 (отладка / розничная торговля) <- не важно, какая из них в этот момент </p>

2) запустите VC ++ 2005 Express IDE, запустите файл VCExpress.exe с ключом / USEENV: [установочный каталог VC ++ 2005 Express] \ Common7 \ IDE \ VCExpress.exe / USEENV Это очистит все заданные по умолчанию bin / Путь к lib / include и добавьте только те, которые установлены для вас в пакетном файле «Установить Windows XP x64 Build Environment (Debug / Retail)».

3) Откройте ваше приложение или создайте новое.

4) Измените свойства приложения («Проект» -> «Свойства») и измените эти настройки на эти значения.

C / C ++ -> Общее -> Формат отладочной информации: База данных программы (/ Zi) C / C ++ -> Генерация кода -> Базовые проверки времени выполнения: по умолчанию Linker -> Advanced -> Target Machine: не установлено Линкер -> Командная строка -> Дополнительные параметры: / MACHINE: AMD64

теперь он должен быть в состоянии скомпилировать для 64-битной (я думаю, я ничего не забыл)

хотя я получил эту ошибку: ошибка PRJ0002: результат ошибки 128 возвращается из C: \ Program Files \ Microsoft Platform SDK \ Bin \ mt.exe '.

, но решил ее, скопировав mt.exe, поставляемый с установкой VC ++ 2005 Express, в каталог PSDK / Bin, перезаписав PSDK / bin / mt.exe.

Еще одна вещь, которую я почти забыл. Вы можете получить эту ошибку, описанную здесь: http://support.microsoft.com/?id=894573 добавление bufferoverflowU.lib в проект решит эту проблему.

Примечание: Я ничего не тестировал, но скомпилировал простое приложение для Windows и консольное приложение, и TaskManager не говорит * 32 после процесса, как это было бы, если бы он был 32-битным. Я не знаю, работает ли он с более крупными проектами или чем-то еще, потому что я работал 10 минут назад:)

Но у меня есть вопрос о моих недавно созданных 64-битных приложениях (просто простое окно "hello world", созданное встроенным мастером), как я могу быть уверен, что оно действительно 64-битное? Менеджер задач говорит, что это потому, что у него нет * 32, но достаточно ли этого доказательства?

EDIT: вам может понадобиться скопировать msvcrtd.dll & msvcp60d.dll из PSDK \ NoRedist \ Win64 \ AMD \ туда, куда они входят (не знаю точно). Я поместил их в Windows \ System32

информация взята с http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/d0770dde-56e5-4a28-acb0-30908c0f7ebd Читайте также:

http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx

0 голосов
/ 21 июля 2009

вы можете скомпилировать его непосредственно в vs2005 или 2008 из-за атрибута «любой процессор» но отмените атрибут "ком видел", если у вас есть возможно, вам следует скопировать его в system32 вместо 64, а затем RegAsm

0 голосов
/ 21 июля 2009

Выберите свойства в вашем проекте. В разделе «Сборка - Платформа» выберите «Любой процессор».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...