出现这种问题是什么原因,需要配置什么东西?

wangleileo 2009-02-24 11:47:14
错误 30 error LNK2028: 无法解析的标记(0A0002CA) "extern "C" struct tagOpsecFilterPredicate * __cdecl lea_filter_predicate_create(char const *,int,int,enum eLeaFilterPredicateType,...)" (?lea_filter_predicate_create@@$$J0YAPAUtagOpsecFilterPredicate@@PBDHHW4eLeaFilterPredicateType@@ZZ),该标记在函数 "struct tagOpsecFilterPredicate * __cdecl CreateRulePred(char *)" (?CreateRulePred@@$$FYAPAUtagOpsecFilterPredicate@@PAD@Z) 中被引用 VPNLEA.obj
...全文
93 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyin55 2009-02-24
  • 打赏
  • 举报
回复
看你的代码,lea_filter_predicate_create()这个函数可能在dll中实现的,要调用dll其中的函数就是包含这个dll并指定这个dll的引导库lib,这个错误可能是lz没有添加这个lib库,可以在编译器中设置,也可以在代码中实现。

using std::string;
#pragma comment(lib,"Ws2_32.lib");
#using "NetBaseBL.dll"

看不出更多的东西,猜测的。
  • 打赏
  • 举报
回复
估计是库的问题.
wangleileo 2009-02-24
  • 打赏
  • 举报
回复
这样不行
lingyin55 2009-02-24
  • 打赏
  • 举报
回复
//试一下修改这里

using std::string;
#pragma comment(lib,"Ws2_32.lib");
#using "NetBaseBL.dll"
wangleileo 2009-02-24
  • 打赏
  • 举报
回复
****************编译文件如下****************
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "lea.h"
#include "lea_filter.h"
#include "opsec.h"
#include <string>
#include <sstream>
#include <time.h>
#include <vcclr.h>

using std::string;
//#pragma comment(lib,"Ws2_32");
#using "NetBaseBL.dll"

#ifdef WIN32
# include <winsock.h>
#else
# include <netinet/in.h>
# include <arpa/inet.h>
#endif

//先前读取的日志数
//static int LogCount=0;
/*
* Function prototypes
*/
void CleanUpEnvironment(OpsecEnv *env, OpsecEntity *client, OpsecEntity *server);
int LeaStartHandler(OpsecSession *);
int LeaEndHandler(OpsecSession *);
int LeaRecordHandler(OpsecSession *, lea_record *, int []);
int LeaDictionaryHandler(OpsecSession *, int, LEA_VT, int);
int LeaEofHandler(OpsecSession *);
int LeaSwitchHandler(OpsecSession *);
int LeaFilterQueryAckHandler(OpsecSession *, int, eLeaFilterAction, int);
LeaFilterRulebase * CreateOfflineRulebase();
LeaFilterRule * CreateRule(char * FieldName);

LeaFilterPredicate * CreateRulePred(char * FieldName);

LeaFilterRulebase * g_pRbase = NULL; /* global rulebase */
static char * LogPath="";
static char * DeviceIP="";
static char * DeviceName="";
static int CheckPointTime=0;
static int InitCount=0;

extern "C"
{
//asp.net调用方法
__declspec(dllexport) int FuncLog(char * DeviceIP1,char * DeviceName1,int CheckPointTime1, int InitCount1 )

*****************************lea_filter.h文件定义如下*********************
#ifndef __LEA_FILTER_H
#define __LEA_FILTER_H

#include "opsec.h"
#include "opsec_export_api.h"

#ifdef __cplusplus
extern "C" {
#endif

/*
* 3rd-party LEA filtering header
*/

/* Filter match function */
typedef enum {
LEA_FILTER_PRED_EQUALS,
LEA_FILTER_PRED_BELONGS_TO,
LEA_FILTER_PRED_EXISTS,
LEA_FILTER_PRED_GREATER,
LEA_FILTER_PRED_GREATER_EQUAL,
LEA_FILTER_PRED_SMALLER,
LEA_FILTER_PRED_SMALLER_EQUAL,
LEA_FILTER_PRED_BELONGS_TO_RANGE,
LEA_FILTER_PRED_BELONGS_TO_MASK,
LEA_FILTER_PRED_CONTAINS_SUBSTRING,
LEA_FILTER_PRED_TRUE
} eLeaFilterPredicateType;


/* Filter rule action */
typedef enum {
LEA_FILTER_ACTION_PASS,
LEA_FILTER_ACTION_DROP,
LEA_FILTER_ACTION_PASS_FIELDS,
LEA_FILTER_ACTION_DROP_FIELDS
} eLeaFilterRuleAction;

/* Filter action */
typedef enum {
LEA_FILTER_REGISTER,
LEA_FILTER_UNREGISTER
} eLeaFilterAction;

/* Filter return value */
typedef enum {
LEA_FILTER_OK = OPSEC_SESSION_OK,
LEA_FILTER_ERR = OPSEC_SESSION_ERR,
LEA_FILTER_NOT_SUP = 1 /* this value is returned by the LEA server, if the filter callback is not registered */
} eLeaFilterRetval;

typedef struct tagOpsecFilterPredicate LeaFilterPredicate;

typedef struct tagOpsecFilterRule LeaFilterRule;

typedef struct tagOpsecFilterRulebase LeaFilterRulebase;

typedef struct _opsec_filter_rule_iter_t lea_filter_rule_iter_t;

typedef struct _opsec_filter_predicate_iter_t lea_filter_predicate_iter_t;

/*
* Function prototypes
*/
DLLIMP LeaFilterPredicate *
lea_filter_predicate_create(const char *attr, int dict, int nNegate, eLeaFilterPredicateType pred_type, ...);
killbug2004 2009-02-24
  • 打赏
  • 举报
回复
把实现这个函数lea_filter_predicate_create的lib包含到项目中
#pragma comment(lib,"xxx.lib")
wushuai1346 2009-02-24
  • 打赏
  • 举报
回复
顶,你把代码贴出来啊~
lingyin55 2009-02-24
  • 打赏
  • 举报
回复
是不是你没有添加必要的lib库,试试在 项目属性->链接器->命令行 输入user32.lib
waizqfor 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangleileo 的帖子:]
错误 30 error LNK2028: 无法解析的标记(0A0002CA) "extern "C" struct tagOpsecFilterPredicate * __cdecl lea_filter_predicate_create(char const *,int,int,enum eLeaFilterPredicateType,...)" (?lea_filter_predicate_create@@$$J0YAPAUtagOpsecFilterPredicate@@PBDHHW4eLeaFilterPredicateType@@ZZ),该标记在函数 "struct tagOpsecFilterPredicate * __cdecl CreateRulePred(char *)" (?CreateRulePred@@$$FYAPAUtagOps…
[/Quote]
函数的连接错误 检查下头文件中变量 函数声明
还有是不是引用什么连接库之类的
herman~~ 2009-02-24
  • 打赏
  • 举报
回复
链接问题
估计是忘记包含外部库或者路径不对等原因造成的

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧