我正在尝试使用软件开发工具包来控制cMOS相机。包含控制摄像机的所有功能的库称为atcorem.lib。我一直在尝试编译和链接SDK中包含的示例文件,该文件应该打印相机的序列号。
我在Visual Studio 2013控制台项目中进行了设置,包括将项目指向其他包含目录,以及链接到其他库目录和附加依赖项。我的代码如下所示:
#include "stdafx.h"
#include "atcore.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i_retCode;
cout << "Initialising ..." << endl << endl;
i_retCode = AT_InitialiseLibrary();
if (i_retCode != AT_SUCCESS) {
cout << "Error initialising library" << endl << endl;
}
else {
AT_64 iNumberDevices = 0;
AT_GetInt(AT_HANDLE_SYSTEM, L"Device Count", &iNumberDevices);
if (iNumberDevices <= 0) {
cout << "No cameras detected" << endl;
}
}
AT_FinaliseLibrary();
return 0;
}
当我尝试构建时,程序编译,但我收到三个lnk2019未解析的外部依赖项错误。
1>ConsoleApplication1.obj : error LNK2019: unresolved external symbol _AT_InitialiseLibrary@0 referenced in function _main
1>ConsoleApplication1.obj : error LNK2019: unresolved external symbol _AT_FinaliseLibrary@0 referenced in function _main
1>ConsoleApplication1.obj : error LNK2019: unresolved external symbol _AT_GetInt@12 referenced in function _main
1>C:\Users\CAMERA1\Documents\Visual Studio 2013\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe : fatal error LNK1120: 3 unresolved externals
从链接器使用/ Verbose选项,我知道它在尝试解析函数时会查看atcorem.lib,但似乎没有在那里找到它们。
Unused libraries:
1> C:\Users\CAMERA1\Desktop\temp\SDK3\atcorem.lib
1> C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86\user32.lib
等
从搜索网络和各种论坛,我了解到C ++调用约定有时会导致问题。这对我来说是新的,所以我试着和他们一起玩,以了解这是否是一个问题。 atcorem.h头文件使用WINAPI,我可以从_fun @格式看到链接器正在寻找__stdcall这些函数。
在atcorem.h中,这看起来像
#if defined(__WIN32__) || defined(_WIN32)
#include <windows.h>
#define AT_EXP_CONV WINAPI
#else
#define AT_EXP_CONV
#endif
int AT_EXP_CONV AT_ex_format_function();
根据WINAPI使用__stdcall的声明,这似乎没问题。
我有更多关于使用dumpbin的atcorem.lib的信息,如果有帮助我可以提供。
非常感谢任何帮助。谢谢!
edit:dumpbin输出的一部分。 edit2:在desktop / temp / SDK3目录中转储atcorem.lib的副本。
Microsoft (R) COFF/PE Dumper Version 12.00.21005.1
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file C:/Users/Camera1/Desktop/temp/SDK3\atcorem.lib
File Type: LIBRARY
Archive member name at 8: /
54B6F19F time/date Wed Jan 14 17:45:51 2015
uid
gid
0 mode
862 size
correct header end
89 public symbols
114E __IMPORT_DESCRIPTOR_atcore
1374 __NULL_IMPORT_DESCRIPTOR
14AA atcore_NULL_THUNK_DATA
2322 AT_QueueBuffer
2322 __imp_AT_QueueBuffer
27CC AT_WaitBuffer
27CC __imp_AT_WaitBuffer
16CC AT_FillBufferMode
16CC __imp_AT_FillBufferMode
1E5A AT_InitialiseLibrary
1E5A __imp_AT_InitialiseLibrary
173A AT_FinaliseLibrary
173A __imp_AT_FinaliseLibrary
...