首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我会收到一条“未解决的外部符号”信息?

为什么我会收到一条“未解决的外部符号”信息?
EN

Stack Overflow用户
提问于 2013-11-20 22:47:40
回答 2查看 1.4K关注 0票数 0

我试图使用IBM的EHLLAPI与他们的个人通信器终端模拟器进行接口。我从此页复制了他们的示例代码,但是当我试图构建它时,它给了我一个错误。

代码语言:javascript
复制
1>------ Build started: Project: PCOMAPI, Configuration: Debug Win32 ------
1>  Source.cpp
1>Source.obj : error LNK2019: unresolved external symbol _hllapi@16 referenced in function _main
1>C:\Users\[username]\Documents\Visual Studio 2013\Projects\VPARSAPI\Debug\PCOMAPI.exe : fatal error LNK1120: 1 unresolved externals

我不完全确定这个_hllapi@16是什么,我在代码中也没有看到它。我已经有一段时间没有使用C++了,所以我可能错过了一些简单的东西。守则如下:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include "hapi_c.h"


int main(char **argv, int argc) {
    int HFunc, HLen, HRc;
    char HBuff[1];
    struct HLDConnectPS ConnBuff;
    // Send Key string for HOME+string+ENTER:
    char SendString[] = "@0Hello World!@E";

    HFunc = HA_RESET_SYSTEM;
    HLen = 0;
    HRc = 0;
    hllapi(&HFunc, HBuff, &HLen, &HRc);
    if (HRc != HARC_SUCCESS) {
        printf("Unable to access EHLLAPI.\n");
        return 1;
    }

    HFunc = HA_CONNECT_PS;
    HLen = sizeof(ConnBuff);
    HRc = 0;
    memset(&ConnBuff, 0x00, sizeof(ConnBuff));
    ConnBuff.stps_shortname = 'A';
    hllapi(&HFunc, (char *)&ConnBuff, &HLen, &HRc);
    switch (HRc) {
    case HARC_SUCCESS:
    case HARC_BUSY:
    case HARC_LOCKED: // All these are OK
        break;
    case HARC_INVALID_PS:
        printf("Host session A does not exist.\n");
        return 1;
    case HARC_UNAVAILABLE:
        printf("Host session A is in use by another EHLLAPI application.\n");
        return 1;
    case HARC_SYSTEM_ERROR:
        printf("System error connecting to session A.\n");
        return 1;
    default:
        printf("Error connecting to session A.\n");
        return 1;
    }

    HFunc = HA_SENDKEY;
    HLen = strlen(SendString);
    HRc = 0;
    hllapi(&HFunc, SendString, &HLen, &HRc);
    switch (HRc) {
    case HARC_SUCCESS:
        break;
    case HARC_BUSY:
    case HARC_LOCKED:
        printf("Send failed, host session locked or busy.\n");
        break;
    default:
        printf("Send failed.\n");
        break;
    }

    HFunc = HA_DISCONNECT_PS;
    HLen = 0;
    HRc = 0;
    hllapi(&HFunc, HBuff, &HLen, &HRc);

    printf("EHLLAPI program ended.\n");
    return 0;
}

我的链接标志是:

  • /OUT:"C:\Usersusername\Documents\Visual 2013\Projects\VPARSAPI\Debug\PCOMAPI.exe“/MANIFEST /NXCOMPAT
  • /PDB:"C:\Usersusername\Documents\Visual
  • 2013\Projects\VPARSAPI\Debug\PCOMAPI.pdb“/DYNAMICBASE”内核32.lib
  • "user32.lib“"gdi32.lib”"winspool.lib“"comdlg32.lib”“Advanpi32.lib”
  • “shell32.lib 32.lib”"ole32.lib“”oleauto32.lib“"uuid.lib”"odbc32.lib“
  • "odbccp32.lib“/DEBUG /MACHINE:X86 /INCREMENTAL
  • Studio2013\Projects\VPARSAPI\Debug\PCOMAPI.pgd“/PGD:”C:\Usersusername\/PGD\Visual /SUBSYSTEM:CONSOLE
  • /MANIFESTUAC:"level='asInvoker‘uiAccess='false'“
  • /ManifestFile:"Debug\PCOMAPI.exe.intermediate.manifest“
  • /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-20 23:01:57

这是链接器错误。您需要将EHLLAPI库的.lib文件导入库传递给链接器。

实际上,查看文档,这个库中有大量的.lib文件。您需要仔细研究文档,以确定您需要哪些文档。

票数 2
EN

Stack Overflow用户

发布于 2013-11-20 23:07:07

正如在编译和链接一节中所述,您必须包含用于静态链接的pcscal32.lib,以便可以解析*hapi_c.h*中的符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20108738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档