Компиляция для Windows 64-битной цели, проблемы со статическими .libs - PullRequest
0 голосов
/ 24 июля 2010

Я использую MS Visual Studio 2008 Professional Edition на Windows 7 64bit. Я установил 64-битные компиляторы вместе со стандартными 32-битными.

Я использовал http://argtable.sourceforge.net/ для Windows 32-битных программ до

У меня нет проблем с созданием приложения (которое написано простым и простым языком C89) для использования argtable2.lib для цели win32, хотя, когда я устанавливаю «Платформу активных решений» на «x64», я получаю кучу ошибок на этапе связывания с неразрешенными внешними символами.

ошибка LNK2019: неразрешенный внешний символ arg_lit0, на который ссылается функция main ошибка LNK2019: неразрешенный внешний символ arg_strn, указанный в функции main ошибка LNK2019: неразрешенный внешний символ arg_end, указанный в функции main ...

заканчивается "фатальной ошибкой LNK1120: 9 неразрешенных внешних проблем".

Я заметил некоторые параметры, такие как опция компоновщика "/ MACHINE: X64", но я не знаю, как использовать это или нужно ли вообще касаться этого параметра.

Я думаю Мне нужно сделать что-то, связанное с созданием 64-битной версии argtable2.lib, но я не знаю, как это сделать. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 24 июля 2010

.lib-файлы не являются независимыми - 32-битные и 64-битные файлы lib являются отдельными. поэтому вам нужно создать 64-битную версию (не поддерживающую 64-битную версию) argtable2.lib.

0 голосов
/ 25 июля 2010

Я нашел решение сам, собираясь сообщить всем остальным, если у кого-то возникнет такая же проблема.Вместо использования nmake для создания статической библиотеки я создал новый проект vc ++ 2008, добавил все необходимые argtable .c и .h, установил тип проекта в Static Lib и скомпилировал.Хорошо работал на 64-битной с компоновщик установлен в / MACHINE: X64.Теперь мое приложение полностью 64-битное.

...