c++ - 从 C++ 中的头文件调用函数时出现 LNK2019 错误
问题描述
我试图从头文件 LG101API.h 调用 API。我将它链接到 Leds.cpp 中,如下所示#include "LG101API.h"。该项目有一个 dll 和 lib LG101API.dll
LG101API.lib
。我在链接器>输入中链接了库,并将路径添加到链接器>常规>附加库目录。现在我继续得到
LNK2019 unresolved external symbol "__declspec(dllimport) int __stdcall KC_LG101_OPENPORT(int,int)" (__imp_?KC_LG101_OPENPORT@@YGHHH@Z) referenced in function _main
这是标题代码
#ifdef LG101API_EXPORTS
#define LG101API_API __declspec(dllexport)
#else
#define LG101API_API __declspec(dllimport)
#endif
// This class is exported from the LG101API.dll
class LG101API_API CLG101API {
public:
CLG101API(void);
// TODO: add your methods here.
};
extern LG101API_API int nLG101API;
//////////////////////////////////////////////////////////////////////////
LG101API_API int _stdcall KC_LG101_OPENPORT(int iCom, int iPort);
LG101API_API int _stdcall KC_LG101_CLOSEPORT(void);
LG101API_API int _stdcall KC_LG101_SETLED(int iLed, int iTurnOn);
LG101API_API int _stdcall KC_LG101_READLED(int* iLEDst);
LG101API_API int _stdcall KC_LG101_READGUARD(int* iGUARDst);
LG101API_API int _stdcall KC_LG101_SETLEDMODE(int iGroup, int iOnTm, int iOffTm);
//////////////////////////////////////////////////////////////////////////
LG101API_API int _stdcall KC_LG101_RESET();
LG101API_API int _stdcall KC_LG101_CONTROLLED(int iLed, int iOnOff, int iOnTm, int iOffTm);
LG101API_API int _stdcall KC_LG101_SETTWINKLE(int* iLedArray, int iOnTm, int iOffTm);
LG101API_API int _stdcall KC_LG101_SETBOOT(int* iLedArray, int* iTwinkleLedArray, int iOnTm, int iOffTm);
LG101API_API int _stdcall KC_LG101_READLEDST(int* iLedArray, int* iTwinkleLedArray);
LG101API_API int _stdcall KC_LG101_GETVERSION(int* iVer);
这就是我在 main 中调用它的方式
KC_LG101_OPENPORT(1, 9600);
KC_LG101_SETLED(1, 1);
解决方案
- 通过任何查看器查看 .lib 文件并找到字符串(如果不能 - 库中有问题):
KC_LG101_OPENPORT@@YGHHH@Z
- 不要在目标软件中定义 LG101API_EXPORTS。
推荐阅读
- bash - 对列中的字符进行计数和索引
- android - Gradle 找不到 Android Compose 编译器
- php - 如何解决此错误消息“找不到合适的服务器(`serverSelectionTryOnce` 集):[无法解析 'db'] 在 Lumen 上?
- performance - Docker 中跨微服务的性能测试
- telerik - 为什么分页在此 RadGrid 上不起作用
- gitlab - 如何将 NPM 包发布到 Gitlab 子组内的项目中
- python - 从 Pandas 数据框中的列开始计数
- git - 如何使用一个帐户克隆 git repo,然后使用第二个帐户推送
- redis - REDIS AOF 文件大小连续翻倍
- javascript - 如何在弹出窗口上制作带有下一个和上一个按钮导航的模态滑块