gpt4 book ai didi

c - LNK2001 VS2012 Net-SNMP

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:47 30 4
gpt4 key购买 nike

这个链接器错误让我束手无策。几天来我一直在网上搜索和挑选大脑,但我完全不知所措。我通过可下载的二进制文件为 Windows 安装了 Net-SNMP (net-snmp-5.5.0-2.x64.exe),并尝试运行示例程序。编译步骤表明没有错误,但我收到了一大堆 LNK2001:未解析的外部符号错误。这表明我没有正确链接库,但我感觉现在希望有人能看到我哪里出错了。我确定它很小,但我就是找不到它。

非常感谢您的帮助;你不知道这会减轻我肩上的重量。

其他包含目录:C:\net-snmp\include

附加库目录:C:\net-snmp\lib; C:\net-snmp\bin

附加依赖项:netsnmp.lib netsnmpagent.lib netsnmphelpers.lib netsnmmpmibs.lib netsnmptrapd.lib(我已经尝试只包含 netsnmp.lib,因为这就是我需要的,但目前我采用的是鸟枪方法)

注意:Net-SNMP 安装到 C:\net-snmp 并通过命令行使用内置的 Net-SNMP 实用程序可以完美运行。

来源:

#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <string.h>

int main(int argc, char ** argv)
{
struct snmp_session session;
struct snmp_session *sess_handle;
struct snmp_pdu *pdu;
struct snmp_pdu *response;
struct variable_list *vars;

oid id_oid[MAX_OID_LEN];
oid serial_oid[MAX_OID_LEN];
size_t id_len = MAX_OID_LEN;
size_t serial_len = MAX_OID_LEN;

int status;
struct tree * mib_tree;

/*********************/
if(argv[1] == NULL){
printf("Please supply a hostname\n");
exit(1);
}

init_snmp("Den Dolphin 2 Check");
snmp_sess_init( &session );

session.version = SNMP_VERSION_1;
session.community = (u_char*) "public";
session.community_len = strlen((const char *)session.community);
session.peername = argv[1]; //172.20.2.103 - Den Dolphin 2

sess_handle = snmp_open(&session);
add_mibdir(".");
mib_tree = read_mib("xiden.txt");
pdu = snmp_pdu_create(SNMP_MSG_GET);

read_objid("PowerNet-MIB::upsBasicIdentModel.0", id_oid, &id_len);
snmp_add_null_var(pdu, id_oid, id_len);
read_objid("PowerNet-MIB::upsAdvIdentSerialNumber.0", serial_oid, &serial_len);

snmp_add_null_var(pdu, serial_oid, serial_len);
status = snmp_synch_response(sess_handle, pdu, &response);

for(vars = response->variables; vars; vars = vars->next_variable)
print_value(vars->name, vars->name_length, vars);

snmp_free_pdu(response);
snmp_close(sess_handle);
return (0);
}

链接器错误:

    Error   1   error LNK2001: unresolved external symbol _snmp_add_null_var    W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 2 error LNK2001: unresolved external symbol _add_mibdir W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 3 error LNK2001: unresolved external symbol _snmp_synch_response W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 4 error LNK2001: unresolved external symbol _snmp_sess_init W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 5 error LNK2001: unresolved external symbol _snmp_pdu_create W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 6 error LNK2001: unresolved external symbol _snmp_close W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 7 error LNK2001: unresolved external symbol _read_objid W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 8 error LNK2001: unresolved external symbol _init_snmp W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 9 error LNK2001: unresolved external symbol _print_value W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 10 error LNK2001: unresolved external symbol _snmp_free_pdu W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 11 error LNK2001: unresolved external symbol _read_mib W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 12 error LNK2001: unresolved external symbol _snmp_open W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\snmp_test.obj snmp_test
Error 13 error LNK1120: 12 unresolved externals W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\Release\snmp_test.exe snmp_test




Build Output:

1>------ Build started: Project: snmp_test, Configuration: Release Win32 ------
1>
1> Starting pass 1
1> Processed /DEFAULTLIB:uuid.lib
1> Processed /DEFAULTLIB:MSVCRT
1> Processed /DEFAULTLIB:OLDNAMES
1>
1> Searching libraries
1> Searching netsnmp.lib:
1> Searching C:\net-snmp\lib\netsnmpagent.lib:
1> Searching C:\net-snmp\lib\netsnmphelpers.lib:
1> Searching C:\net-snmp\lib\netsnmpmibs.lib:
1> Searching C:\net-snmp\lib\netsnmptrapd.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\user32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\gdi32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\winspool.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\comdlg32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\advapi32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\shell32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\ole32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\oleaut32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\uuid.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\odbc32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\odbccp32.lib:
1> Searching C:\net-snmp\lib\netsnmp.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\MSVCRT.lib:
1> Found @__security_check_cookie@4
1> Referenced in snmp_test.obj
1> Loaded MSVCRT.lib(secchk.obj)
1> Found __imp__printf
1> Referenced in snmp_test.obj
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp__exit
1> Referenced in snmp_test.obj
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found _mainCRTStartup
1> Loaded MSVCRT.lib(crtexe.obj)
1> Found ___report_gsfailure
1> Referenced in MSVCRT.lib(secchk.obj)
1> Loaded MSVCRT.lib(gs_report.obj)
1> Found ___security_cookie
1> Referenced in MSVCRT.lib(secchk.obj)
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded MSVCRT.lib(gs_cookie.obj)
1> Found __IMPORT_DESCRIPTOR_MSVCR110
1> Referenced in MSVCRT.lib(MSVCR110.dll)
1> Referenced in MSVCRT.lib(MSVCR110.dll)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___CxxSetUnhandledExceptionFilter
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(unhandld.obj)
1> Found __XcptFilter
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __amsg_exit
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __setargv
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(dllargv.obj)
1> Found __imp____getmainargs
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp____set_app_type
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __IsNonwritableInCurrentImage
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(pesect.obj)
1> Found __imp___exit
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp___cexit
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___security_init_cookie
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(gs_support.obj)
1> Found __matherr
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(merr.obj)
1> Found _atexit
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(atonexit.obj)
1> Found __RTC_Initialize
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(initsect.obj)
1> Found __imp___configthreadlocale
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __setdefaultprecision
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(fp8.obj)
1> Found __imp____setusermatherr
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __initterm_e
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __initterm
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __SEH_epilog4
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(sehprolg4.obj)
1> Found __except_handler4
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Referenced in MSVCRT.lib(pesect.obj)
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Referenced in MSVCRT.lib(sehprolg4.obj)
1> Loaded MSVCRT.lib(chandler4gs.obj)
1> Found ___globallocalestatus
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(xthdloc.obj)
1> Found __commode
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(xncommod.obj)
1> Found __dowildcard
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(wildcard.obj)
1> Found __newmode
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(_newmode.obj)
1> Found __imp____initenv
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___native_startup_state
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(natstart.obj)
1> Found __fmode
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(xtxtmode.obj)
1> Found __imp___fmode
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp___commode
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___xi_a
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded MSVCRT.lib(cinitexe.obj)
1> Processed /DEFAULTLIB:kernel32.lib
1> Processed /DISALLOWLIB:libcmt.lib
1> Processed /DISALLOWLIB:libcmtd.lib
1> Processed /DISALLOWLIB:msvcrtd.lib
1> Found __crt_debugger_hook
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___crtUnhandledException
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___crtTerminateProcess
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __NULL_IMPORT_DESCRIPTOR
1> Referenced in MSVCRT.lib(MSVCR110.dll)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found MSVCR110_NULL_THUNK_DATA
1> Referenced in MSVCRT.lib(MSVCR110.dll)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found "void __cdecl terminate(void)" (?terminate@@YAXXZ)
1> Referenced in MSVCRT.lib(unhandld.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___crtSetUnhandledExceptionFilter
1> Referenced in MSVCRT.lib(unhandld.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __lock
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __unlock
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp___calloc_crt
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found ___dllonexit
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __imp___onexit
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __invoke_watson
1> Referenced in MSVCRT.lib(fp8.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __controlfp_s
1> Referenced in MSVCRT.lib(fp8.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Found __except_handler4_common
1> Referenced in MSVCRT.lib(chandler4gs.obj)
1> Loaded MSVCRT.lib(MSVCR110.dll)
1> Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib:
1> Searching netsnmp.lib:
1> Searching C:\net-snmp\lib\netsnmpagent.lib:
1> Searching C:\net-snmp\lib\netsnmphelpers.lib:
1> Searching C:\net-snmp\lib\netsnmpmibs.lib:
1> Searching C:\net-snmp\lib\netsnmptrapd.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib:
1> Found __imp__EncodePointer@4
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__IsDebuggerPresent@0
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found _IsProcessorFeaturePresent@4
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__QueryPerformanceCounter@4
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetCurrentProcessId@0
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetCurrentThreadId@0
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetSystemTimeAsFileTime@4
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__DecodePointer@4
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __IMPORT_DESCRIPTOR_KERNEL32
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found KERNEL32_NULL_THUNK_DATA
1> Referenced in kernel32.lib(KERNEL32.dll)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\user32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\gdi32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\winspool.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\comdlg32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\advapi32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\shell32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\ole32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\oleaut32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\uuid.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\odbc32.lib:
1> Searching C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\odbccp32.lib:
1> Searching C:\net-snmp\lib\netsnmp.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\MSVCRT.lib:
1> Searching C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib:
1> Searching netsnmp.lib:
1> Searching C:\net-snmp\lib\netsnmpagent.lib:
1> Searching C:\net-snmp\lib\netsnmphelpers.lib:
1> Searching C:\net-snmp\lib\netsnmpmibs.lib:
1> Searching C:\net-snmp\lib\netsnmptrapd.lib:
1>
1> Finished searching libraries
1>
1> Finished pass 1
1>
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_add_null_var
1>snmp_test.obj : error LNK2001: unresolved external symbol _add_mibdir
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_synch_response
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_sess_init
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_pdu_create
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_close
1>snmp_test.obj : error LNK2001: unresolved external symbol _read_objid
1>snmp_test.obj : error LNK2001: unresolved external symbol _init_snmp
1>snmp_test.obj : error LNK2001: unresolved external symbol _print_value
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_free_pdu
1>snmp_test.obj : error LNK2001: unresolved external symbol _read_mib
1>snmp_test.obj : error LNK2001: unresolved external symbol _snmp_open
1>W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\Release\snmp_test.exe : fatal error LNK1120: 12 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

链接器配置命令行:

/OUT:"W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\Release\snmp_test.exe" /MANIFEST /LTCG 
/NXCOMPAT /PDB:"W:\SNMP Depot\NetSMNP\snmp_test\snmp_test\Release\snmp_test.pdb"
/DYNAMICBASE "netsnmp.lib" "netsnmpagent.lib" "netsnmphelpers.lib" "netsnmpmibs.lib"
"netsnmptrapd.lib" "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 /OPT:REF /SAFESEH /PGD:"W:\SNMP
Depot\NetSMNP\snmp_test\snmp_test\Release\snmp_test.pgd" /MANIFESTUAC:"level='asInvoker'
uiAccess='false'" /ManifestFile:"Release\snmp_test.exe.intermediate.manifest" /OPT:ICF
/ERRORREPORT:PROMPT /NOLOGO /VERBOSE /LIBPATH:"C:\net-snmp\lib" /LIBPATH:"C:\net-snmp\bin"
/TLBID:1

最佳答案

似乎推荐的构建和链接 net-snmp 应用程序的方法如下:

gcc `net-snmp-config --cflags` `net-snmp-config --libs` `net-snmp-config --external-libs` snmp_test.c -o snmp_test

反引号适用于 *nix 平台。但是您也可以在 Windows 平台上获得必要的值。在 shell 中执行以下命令,并确保您使用的是 CFLAGS 和库的输出值。

net-snmp-config --cflags
net-snmp-config --libs
net-snmp-config --external-libs

请参阅man page for net-snmp-config用于列出所需标志和库的其他选项。

关于c - LNK2001 VS2012 Net-SNMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667718/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com