首页 > 解决方案 > 从 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);

标签: c++

解决方案


  1. 通过任何查看器查看 .lib 文件并找到字符串(如果不能 - 库中有问题):

KC_LG101_OPENPORT@@YGHHH@Z

  1. 不要在目标软件中定义 LG101API_EXPORTS。

推荐阅读