Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2009, 16:21   #1
Fantom101
Новичок
Джуниор
 
Регистрация: 11.09.2009
Сообщений: 2
По умолчанию Ошибка компилятора. LARGEADDRESSAWARE

Всем добрый день. Вообщем есть dll х64.
Точнее 2 варианта.
1й использует типы Int, INT32 и прочии.
2й использует u32 s32 u8 и т д.
Говорю это так как может в этом дело.
В общем есть код
.cpp
Код:
// ?experienceTable@CLevel85System@@2PA_JA
__int64 CLevel85System::experienceTable[101] = 
{
    0,
    0, 68, 363, 1168, 2884, 6038, 11287, 19423, 31378,
    48229, 71202, 101677, 141193, 191454, 254330, 331867, 426288, 540000, 675596,
    835862, 1023784, 1242546, 1495543, 1786379, 2118876, 2497077, 2925250, 3407897, 3949754,
    4555796, 5231246, 5981576, 6812513, 7730044, 8740422, 9850166, 11066072, 12395215, 13844951,
    15422929, 17137087, 18995665, 21007203, 23180550, 25524868, 28049635, 30764654, 33680052, 36806289,
    40154162, 45525133, 51262490, 57383988, 63907911, 70853089, 80700831, 91162654, 102265881, 114038596,
    126509653, 146308200, 167244337, 189364894, 212717908, 237352644, 271975263, 308443198, 346827154, 387199547,
    429634523, 474207979, 532694979, 606322775, 696381369, 804225364, 931275828, 1151275834, 1511275834, 2099275834,
    4200000000L, 6300000000L, 8820000000L, 11844000000L, 15472800000L, 19827360000L, 25314000000L, 115500000000L, 186900000000L, 302400000000L,
    489300000000L, 791700000000L, 1281000000000L, 2072700000000L, 3353700000000L, 5426400000000L, 8780100000000L, 14206500000000L, 22986600000000L, 37193100000000L,
    99999999999999L
};
.h
Код:
class CLevel85System
{
public:
	static void Initialize();
	static __int64 experienceTable[];
.............................
};
.asm
Код:
EXTERN ?experienceTable@CLevel85System@@2PA_JA:PTR
EXTERN ?npcExperience@CLevel85System@@2PA_JA:PTR

?MovEaxRcx_exp2@CLevel85System@@CAXXZ proc
		mov     rax, [rcx+0BE0h]
		mov     [rsp+48h], rax
		mov     [rsp+48h], eax
		mov     [rsp+40h], r13d
		mov     [rsp+38h], r14d
		mov     [rsp+30h], r15d
		cvttsd2si eax, qword ptr [rcx+198h]
		mov     dword ptr [rsp+28h], eax
		cvttsd2si eax, qword ptr [rcx+4C0h]
		mov     dword ptr [rsp+20h], eax
		lea     r8, [?DebugInformation2@CLevel85System@@2PA_WA]
		mov     edx, 1FFh
		lea     rcx, [rsp+2E0h]
		jmp		[ret_47AB66]
?MovEaxRcx_exp2@CLevel85System@@CAXXZ endp

?MovEdx_444CB1@CLevel85System@@CAXXZ	proc
		mov     rax, [r11+28h]
		call	rax
		test	al,al
		jz		MovEdx_444CB1_1		; jedna se o npc
		mov     rdx, [rbp*8+?experienceTable@CLevel85System@@2PA_JA]
		jmp		short MovEdx_444CB1_2
MovEdx_444CB1_1:
		mov     rdx, [rbp*8+?npcExperience@CLevel85System@@2PA_JA]
MovEdx_444CB1_2:
		jmp		[ret_444CB8]
?MovEdx_444CB1@CLevel85System@@CAXXZ	endp

..............
При компиляции происходит ошибка :
Цитата:
Error 24 error LNK2017: 'ADDR32' relocation to '?experienceTable@CLevel85System@@2 PA_JA' invalid without /LARGEADDRESSAWARE:NO CLevel85System.asm.obj
Тут пишут что я пытаюсь 32 битное приложение скомпилить в 64 варианте... или как на майкрософт:
Цитата:
Сообщение об ошибке
перемещение "символа" в "сегмент" недопустимо без параметра /LARGEADDRESSAWARE:NO
'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO


Выполняется попытка построения 64-разрядного изображения с 32-разрядным адресом. Для этого необходимо выполнить следующее.

Использовать фиксированный адрес загрузки.

Ограничить размер изображения до 3 ГБ.

Задать параметр /largeaddressaware:no.
Решение якобы вот:
Цитата:
Параметр /LARGEADDRESSAWARE сообщает компоновщику, что приложение может обрабатывать адреса больше 2 ГБ. По умолчанию включен параметр /LARGEADDRESSAWARE:NO, если в строке компоновщика для параметра /LARGEADDRESSAWARE не указано иное.

Если компоновка приложения производилась с параметром /LARGEADDRESSAWARE, использование параметра DUMPBIN /HEADERS приведет к отображению соответствующих сведений.
Установка данного параметра компоновщика в среде разработки Visual Studio

Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Установка свойств проекта C++.

Щелкните папку Компоновщик.

Выберите страницу свойств Система.

Измените свойство Включить большие адреса.
Проверил не работает.
Вообщем надеюсь на помощь в решении вопроса.
=================================== ===
Приложение компилиться в 1м варианте а во 2м нет.
=================================== ===

Последний раз редактировалось Fantom101; 11.09.2009 в 16:24.
Fantom101 вне форума Ответить с цитированием
Старый 12.09.2009, 05:20   #2
Fantom101
Новичок
Джуниор
 
Регистрация: 11.09.2009
Сообщений: 2
По умолчанию

Вообщем некто нечего не знает?
Fantom101 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание компилятора Crivel Софт 7 23.01.2010 18:29
Определение компилятора AltF4 Общие вопросы C/C++ 4 11.08.2009 11:11
директивы компилятора delphin100 Общие вопросы Delphi 4 07.10.2008 12:35
Исходники компилятора Simply-Art Свободное общение 1 08.07.2008 13:17
Ошибка компилятора??? KIRILL_FR Общие вопросы Delphi 10 25.04.2008 13:38