我使用VS 2012 Pro创建了一个标准的Windows应用程序。只是一个看起来像这样的main.cpp:
#include "gdal_priv.h"
#include "cpl_conv.h"
int main(int argc, char* argv[])
{
GDALAllRegister();
return 0;
}
我已正确设置了包含路径。我的链接器中有gdal_i.lib - >输入 - >附加依赖。
链接失败并显示以下消息:
1> main.obj:错误LNK2019:未解析的外部符号 函数_main
中引用了_GDALAllRegister @ 0
(还缺少一大堆其他符号,但这个符号应该很简单。)
我使用了dumpbin,GDALAllRegister出现在导出的符号中。它确实显示为“GDALAllRegister”,而不是“_GDALAllRegister @ 0”。
我尝试下载并使用开发构建,并自己构建。相同的结果。
我只知道这很简单,但我在这里完全是脑筋急转直。我做错了什么?
感谢。
-reilly。
答案 0 :(得分:1)
我说它简单而愚蠢,而且确实如此。
我将构建管理器设置为构建32位。
我生命中的另外4个小时我永远不会回来。
感谢Manuell的建议。它让我朝不同的方向看,我找到了它。
对不起,社区。这就是编程累了。
-reilly。
答案 1 :(得分:0)
这种错误是EXE和LIB之间“呼叫约定”不匹配的典型错误。
检查“配置属性”中的 __ cdecl(/ Gd) - > C ++ - >高级 - > “召集公约”