无法解决的外部符号错误
c++ LNK2001: unresolved external symbol error
我目前正在创建一个应用程序,该应用程序将多个图像元素覆盖在来自网络摄像头的提要上。我遵循本指南,以显示网络摄像头源http://www.dreamincode.net/forums/topic/193519-win32-webcam-program/,并将其与directx框架(基于http://www.youtube.com/user/ChiliTomatoNoodle教程)相结合后,我结束了一个链接错误,在第135行(具体来说,'错误LNK2001:未解析的外部符号_capCreateCaptureWindowA@32')。
你知道我做错了什么吗?
#include <windows.h>
#include <vfw.h>
#include <wchar.h>
#include "Game.h"
#include "resource.h"
#include "Mouse.h"
LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM);
static KeyboardServer kServ;
static MouseServer mServ;
char szAppName [] = TEXT("Webcam");
HWND camhwnd;
HDC hdc ;
HDC hdcMem;
PAINTSTRUCT ps;
HBITMAP hbm;
RECT rc;
//WinMain -- Main Window
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
RegisterClass (&wc);
hwnd = CreateWindow (szAppName,szAppName,WS_POPUP | WS_VISIBLE,0,0,1920,1080,0,0,hInstance,0);
ShowWindow (hwnd,SW_SHOW);
UpdateWindow (hwnd);
ShowWindow(camhwnd,SW_SHOW);
SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);
SendMessage(camhwnd, WM_CAP_SET_SCALE, true , 0);
SendMessage(camhwnd, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage(camhwnd, WM_CAP_SET_PREVIEW, true , 0);
Game theGame( hwnd,kServ,mServ );
while( msg.message != WM_QUIT ) {
if( PeekMessage( &msg,NULL,0,0,PM_REMOVE ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else {
theGame.Go();
}
}
return msg.wParam;
}
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) {
switch( msg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
break;
// ************ KEYBOARD MESSAGES ************ //
case WM_KEYDOWN:
switch( wParam ) {
case VK_UP:
kServ.OnUpPressed();
break;
case VK_DOWN:
kServ.OnDownPressed();
break;
case VK_LEFT:
kServ.OnLeftPressed();
break;
case VK_RIGHT:
kServ.OnRightPressed();
break;
case VK_SPACE:
kServ.OnSpacePressed();
break;
case VK_RETURN:
kServ.OnEnterPressed();
break;
}
break;
case WM_KEYUP:
switch( wParam ) {
case VK_UP:
kServ.OnUpReleased();
break;
case VK_DOWN:
kServ.OnDownReleased();
break;
case VK_LEFT:
kServ.OnLeftReleased();
break;
case VK_RIGHT:
kServ.OnRightReleased();
break;
case VK_SPACE:
kServ.OnSpaceReleased();
break;
case VK_RETURN:
kServ.OnEnterReleased();
break;
}
break;
// ************ END KEYBOARD MESSAGES ************ //
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}
//Main Window Procedure WindowProc
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HINSTANCE hInstance = GetModuleHandle(NULL);
switch (message) {
case WM_CREATE: {
camhwnd = capCreateCaptureWindow ("camera window", WS_CHILD , 0, 0, 1920, 1080, hwnd, 0);
SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);
SendMessage(camhwnd,WM_CAP_DLG_VIDEOSOURCE,0,0);
break;
}
case WM_DESTROY: {
SendMessage(camhwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
文档包含题为Requirements的部分。这列出了调用该函数所需的头文件和导入库。
- 如果你没有包含头文件,编译器对象,因为没有函数声明。
- 如果你未能将导入库传递给链接器,它将失败,因为缺少引用。
您没有将导入库传递给链接器。将其添加到项目配置的链接器部分中的附加库依赖项中。
导入库的名称列在我上面链接到的MSDN文档中。此程序可用于所有API函数。
相关文章:
- 在C++中使用内联方法时出现未定义的符号错误
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 函数指针给我"重新声明为不同类型的符号"错误
- "byte":使用Crypto++和Windows SDK时出现不明确的符号错误
- 函数路径追加上未解决的外部符号错误
- 作为成员的静态类模板实例会导致未解析的外部符号错误
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- 共享库中使用"使用命名空间"定义的符号错误
- 在FreesWitch中使用AWS C SDK加载模块时未定义的符号错误
- 在 Mac 上C++编译代码时处理“dyld:惰性符号绑定失败:找不到符号”错误
- C++编译错误LNK2019:未解决的外部符号错误
- VTK / ITK/ QT - 未解决的外部符号错误 (LNK2001)
- QT创建者:简单程序未解决的外部符号和外部符号错误
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- 标准::字符串::空的未定义符号错误;Mac OS High Sierra 上的 c++ 标准方法链接错误
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 由于使用未签名的INT,因此在Variadic模板C 上未解决的外部符号错误
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- 使用从WINRT网格类派生的抽象类时,Casttobase未解决的外部符号错误
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See