链接问题C/C++
Linking issues C/C++
我是C&C++和我急需帮助。我想重用供应商已经编码的功能。为此,Vendor给了我.H
文件&.lib
文件。供应商代码是用Visual C语言开发的,我正试图在Visual C++6中访问这些.lib文件。编译成功。链接时出错。采取的步骤:
- 我已经链接了项目设置下的所有
.lib
文件
我仍然收到以下错误消息:
pricing_w32.obj:错误LNK2001:未解析的外部符号
_open_item_info_files
调试/pricing_w32.exe:致命错误LNK1120:1个未解析的外部执行link.exe.时出错
下面是我写的代码:
#include<stdio.h>
#include<string.h>
#include<fstream>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
#include <windows.h>
extern "C"
{
#include<cma_telx.h>
}
using namespace std;
int process_file(char **in_file);
extern "C"
{
void lkup_item_info( void *item );
int open_item_info_files( int *err );
int close_item_info_files( int *err );
int open_item_promo_files( int *err );
int close_item_promo_files( int *err );
void lkup_rtn_csp_db( void *itemCspWDB );
void lkup_rtn_promos_csp_db( void *itemPrmCspWDB );
int do_empdisc_lookup( struct EMPDISC_RECORD *edisc, int *err );
int do_empauth_lookup( struct EMPLOYEE_AUTH_REC *eauth, int *err );
void return_all_promos(struct ALL_PRMINFO_BASE &all_promos);
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char UPC[7];
void *SKU;
cout<<"Normal end"<<endl;
int return_code, *err;
return_code = open_item_info_files(err);
cout<<return_code<<"open item return code"<<endl;
cout<<return_code<<"Close item return code"<<endl;
return 0;
}
cma_telx.h包含以下函数原型:
int open_item_info_files( int *err );
下面是命令的片段:dumpbin/symbols cma_telx.lib
076 00000000 SECT1D未键入()外部|?打开项目信息文件@@YAHPAH@Z(int__cdecl open_item_info_files(int*))标签索引00000083大小00000121行00007129下一个函数0000008E078 00000000 SECT1E未键入静态|.data区段长度9,#重新定位0,#行编号0,校验和145249B4,选择2(任意选择)07A 00000000 SECT1E未键入外部|??_C@_08OOCA@PMSDPTCL$AA@(string')
07B 00000000 SECT1F notype Static | .data
Section length 7, #relocs 0, #linenums 0, checksum 7F8A6B53, selection 2 (pick any)
07D 00000000 SECT1F notype External | ??_C@_06CPCO@TSITEM?$AA@ (
字符串')07E 00000000 SECT20未键入静态|.data区段长度7,#重定位0,#行编号0,校验和F397CDFF,选择2(任意选择)08000000000 SECT20未键入外部|??_C@_06OHCH@KPXREF$AA@(`string')08100000000 UNDEF nottype()External|_imp_FileManager08200000000 UNDEF非类型()外部|__chkstk
*.lib文件是用于静态链接还是用于dll链接?在我的VC++2010 Express上,我必须在项目属性/C++/代码生成/运行时bib下检查是否链接到DLL(=静态)。
转到未解析外部符号的定义/声明并发布其定义!
首先要检查的是确保您已经添加了.lib文件项目属性>>链接器。我现在在mac上,但你在第二页的链接器设置下添加了.lib,你必须在第一页的链接程序下添加路径。
之后,检查c++>>"代码生成",看看它是否通过MT或MD设置链接。这必须与实际的.lib文件所依据的内容相匹配,因此您可能需要切换它,这可能会奏效。
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题