error LNK1120: 2个无法解析的外部命令:vtkRenderingOpenGL_AutoInit(Construct、Destruct),该函数在......中被引用

进行PCL最小包围盒计算时,使用了https://blog.youkuaiyun.com/WillWinston/article/details/80196895 里的程序。

在pcl1.8.0+vs2013+win10环境下,调试报错:

(1)error LNK1120: 2 个无法解析的外部命令;

(2)error LNK2019:无法解析的外部符号"vtkRenderingOpenGL_AutoInit(Construct)"在.....中被引用;

(3)error LNK2019:无法解析的外部符号"vtkRenderingOpenGL_AutoInit(Destruct)"在.....中被引用。

网上搜索这个问题的原因说:是有头文件,但找不到实现(https://blog.youkuaiyun.com/ydc_ss/article/details/53227732):

(1)只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp文件中的)。所以只能通过编译,连接不成功。
(2)另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。

因此针对vtkRenderingOpenGL这个文件在安装的文件中搜索发现自己使用的是vtkRenderingOpenGL2,才会找不着,修改后报错解决。

根据提供的信息,error LNK2019 和 fatal error LNK1120 通常是由于链接器无法找到所需的符号而导致的。在引用[1]中提到的 “无法解析的外部符号 _WinMain@16” 表明链接器在寻找 `WinMain` 函数,但未能找到。在 Windows 编程中,Win32 控制台应用程序使用 `main` 函数作为入口点,而 Win32 应用程序使用 `WinMain` 函数作为入口点。 解决此问题的方法如下: 1. **检查入口点函数**:确保代码中使用了正确的入口点函数。如果是 Win32 控制台应用程序,使用 `main` 函数;如果是 Win32 应用程序,使用 `WinMain` 函数。如引用[2]所述,“把 WinMain 写成 main 就行了,应用程序启动运行时调用的进入点函数,win32 console 对应 main,win32 application 对应 WinMain”。 ```cpp // Win32 控制台应用程序示例 #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } // Win32 应用程序示例 #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox(NULL, TEXT("Hello, World!"), TEXT("Win32 Application"), MB_OK); return 0; } ``` 2. **重新编译预编译头文件**:有时问题可能是由于预编译头文件未正确编译导致的。可以尝试重新编译 “StdAfx.cpp” 文件,如引用[3]中所述,“只要重新将 ‘StdAfx.cpp’ 编译一下就可以了”。也可以先按 F7 进行编译,然后再按 Ctrl + F7。 3. **检查项目配置**:确保项目配置正确,特别是在使用预编译头文件时。对于 VS2010,可以参考引用[4]中的配置,确保预编译头文件在 Debug 和 Release 模式下都能正确创建。 ```xml <ClCompile Include="stdafx.cpp"> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> </ClCompile> ```
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值