Почему я получаю «неразрешенный внешний символ»? сообщение?

Я пытаюсь использовать EHLLAPI от IBM для взаимодействия с их эмулятором терминала личного коммуникатора. Я скопировал их пример кода из эта страница, но это дает мне ошибку, когда я пытаюсь его построить.

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 ++, поэтому, может быть, мне чего-то не хватает. Код выглядит следующим образом:

#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: \ Users [имя пользователя] \ Documents \ Visual Studio
    2013 \ Проекты \ VPARSAPI \ Debug \ PCOMAPI.exe «/ МАНИФЕСТ / NXCOMPAT
  • / PDB: «C: \ Users [имя пользователя] \ Documents \ Visual Studio
  • 2013 \ Projects \ VPARSAPI \ Debug \ PCOMAPI.pdb «/ DYNAMICBASE» kernel32.lib «
  • «user32.lib» «gdi32.lib» «winspool.lib» «comdlg32.lib» «advapi32.lib»
  • «shell32.lib» «ole32.lib» «oleaut32.lib» «uuid.lib» «odbc32.lib»
  • «odbccp32.lib» / DEBUG / MACHINE: X86 / INCREMENTAL
  • / PGD: «C: \ Users [имя пользователя] \ Documents \ Визуальное
    Studio2013 \ Проекты \ VPARSAPI \ Debug \ PCOMAPI.pgd «/ ПОДПИСЬ: КОНСОЛЬ
  • / MANIFESTUAC: «level = ‘asInvoker’ uiAccess = ‘false'»
  • /ManifestFile:»Debug\PCOMAPI.exe.intermediate.manifest»
  • / ERRORREPORT: PROMPT / NOLOGO / TLBID: 1

0

Решение

Это ошибка компоновщика. Вам нужно передать компоновщику файл .lib, библиотеку импорта, для библиотеки EHLLAPI.

На самом деле, глядя на документация, с этой библиотекой существует множество файлов .lib. Вам нужно будет внимательно изучить документацию, чтобы решить, какие из них вам нужны.

2

Другие решения

Как указано в разделе Компиляция и связывание Вы должны включить pcscal32.lib для статического связывания, поэтому символы в * hapi_c.h * могут быть разрешены.

0

По вопросам рекламы [email protected]