【发布时间】:2014-09-02 05:26:16
【问题描述】:
该项目构建在 Win32 平台上,而不是 x64 平台上。
完整的错误信息: dllentry.obj : 错误 LNK2001: 无法解析的外部符号 "class 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 配置中省略了该文件?
-
要定位问题,请尝试从
extern CFactoryTemplate g_Templates[];行中删除extern
标签: c++ visual-c++ 64-bit lnk2001