【发布时间】:2015-06-29 21:02:17
【问题描述】:
我是一个 C# 人,所以我在这里迷路了,这个项目声称已经为 Windows 编译了该库https://soildgeo.codeplex.com/releases/view/108738
该文件夹带有 Include、Lib64 和 Bin64 文件夹。如果我没记错的话,我只需要将 .lib 文件复制到 VC/lib 文件夹,并将 include 中的文件夹复制到 VC/include 文件夹,这样我就可以开始针对这些 API 进行编码,它们出现在 #include智能感知,但随后它们无法编译。我的问题是,我对整个过程的假设是否正确?如果不是正确的步骤是什么?最后,我是否需要随时使用 Bin64 文件夹中的 Dll?
我正在使用 VS2013 提前致谢
编辑
1>------ 构建开始:项目:PhysBAMTest,配置:Debug x64 ------
1> 主.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163): 错误 C2146: 语法错误: 缺少';'在标识符“属性”之前
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163): 错误 C2530: 'PhysBAM::LOG::anonymous-namespace'::cout' : references must be initialized
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163): error C2065: 'unused' : undeclared identifier
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163): error C2143: syntax error : missing ';' before '='
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164): error C2146: syntax error : missing ';' before identifier '__attribute__'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164): error C2530: 'PhysBAM::LOG::anonymous-namespace':: cerr' : 必须初始化引用
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164): error C2065: 'unused' : undeclared identifier
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164): 错误 C2374: 'PhysBAM::LOG::anonymous-namespace'::__attribute__' : redefinition; multiple initialization
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(163) : see declaration of 'PhysBAM::LOG::anonymous-namespace':: 属性'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\PhysBAM_Tools\Log\LOG.h(164): 错误 C2143: 语法错误: 缺少';'在'='之前
========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========
编辑
根据下面的答案添加WIN32宏后,这次我遇到了链接器错误
错误 1 错误 LNK2019:未解析的外部符号“class std::basic_ostream > & __cdecl PhysBAM::LOG::cout_Helper(void)”(?cout_Helper@LOG@PhysBAM@@YAAEAV?$basic_ostream@DU?$char_traits@ D@std@@@std@@XZ) 在函数“void __cdecl PhysBAM::LOG::anonymous namespace'::dynamic initializer for 'cout''(void)”中引用 (??__Ecout@?A0x5bbeb782@LOG@PhysBAM@@ YAXXZ) C:\Users...\Documents\Visual Studio 2013\Projects\PhysBAMTest\PhysBAMTest\main.obj PhysBAMTest
【问题讨论】:
-
一个建议:无论何时/无论何时添加新的.. 将它们分开.. 始终。永远不要弄乱现有的东西。始终添加新文件夹以包含路径。
-
为了澄清一些事情,
.lib文件有两种类型:一种用于静态链接,其中.lib文件包含库的实际代码;并导出库以充当 DLL 的包装器,其中 DLL 包含库的实际代码。头文件可以包含一些内联代码,但大部分只是告诉编译器库中存在什么的声明。
标签: c++ visual-c++