Проект построен на платформе Win32, но не на x64.LNK2001: неразрешенный внешний символ при построении платформы x64
Полное сообщение об ошибке: dllentry.obj: LNK2001 ошибка: неразрешенный внешний символ "класс CFactoryTemplate * g_Templates" (g_Templates @@ 3PAVCFactoryTemplate @@ A?)
dllentry.cpp компилирует на обеих платформах. Он содержит внешние объявления:
extern CFactoryTemplate g_Templates[];
extern int g_cTemplates;
g_Templates [] затем используется в двух функциях:
__control_entrypoint(DllExport) STDAPI DllGetClassObject(__in REFCLSID rClsID,
__in REFIID riid, __deref_out void **pv)
{
...
for (int i = 0; i < g_cTemplates; i++)
{
const CFactoryTemplate * pT = &g_Templates[i];
}
}
и
DllInitClasses(BOOL bLoading)
{
...
for (int i = 0; i < g_cTemplates; i++)
{
const CFactoryTemplate * pT = &g_Templates[i];
}
}
Я проверил все библиотеки в настройках проекта и все кажется все в порядке, используются 64-битные версии. Что делать, чтобы сделать сборку проекта для платформы x64?
Где определение (не объявление) g_Templates? Возможно ли, что файл был исключен из конфигурации x64? – dlf
Чтобы найти проблему, попробуйте удалить 'extern' из строки' extern CFactoryTemplate g_Templates []; ' – KonstantinL