关于xxx.lib 引入调用的问题

渴死的鱼都被人用了啊 2014-04-17 06:35:55
头文件.h
#ifndef _ILBC_H
#define _ILBC_H

#include <mmsystem.h>
//宏定义,如果系统没有声明WINAPI,则进行声明,_stdcall为标准调用方式
#ifndef WINAPI
#define WINAPI _stdcall
#endif

//////////////////////////////////////////

#ifdef __iLBC_DLL_IMPORT

#include "iLBC_encode.h"
#include "iLBC_decode.h"

iLBC_Enc_Inst_t iLBCenc_inst;
iLBC_Dec_Inst_t iLBCdec_inst;

#define iLBC_API(type, name , args) \
extern "C" type __declspec(dllexport) WINAPI name args;
#else
#define iLBC_API(type, name , args) \
extern "C" type __declspec(dllimport) WINAPI name args;
#endif

///////////////////////////////////////////////////////////////////
iLBC_API(bool, ilbc_init, ());
iLBC_API(int, ilbc_encoder, (short *pin,unsigned char *pout));
iLBC_API(int, ilbc_decoder, (unsigned char *pin,short *pout));

#endif


cpp文件关键代码
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
....//代码
return TRUE;
}
bool WINAPI ilbc_init()
{
........
}
int WINAPI ilbc_encoder(short *pin,unsigned char* pout)
int WINAPI ilbc_decoder(unsigned char *pin ,short *pout)


生成一个lib和一个dll
我自己新建了另外一个dll项目 想引入这个lib 引入后。应该怎么调用?
我是c++ 小白 找了多资料还是不懂。各位大神们。求解答!

或者给我一个可以直接调用的iLBC.lib也行 告诉我怎么用!
最后30分了。求解!
...全文
352 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 16 楼 PPower 的回复:
这个lib.如果是不同版本的BCB或其他编译器编译的LIB,最好用当前版本CB重新编译. 微软的LIB不能直接在CB中用。
我是在vs2010中开发的。。
勉励前行 2014-04-18
  • 打赏
  • 举报
回复
这个lib.如果是不同版本的BCB或其他编译器编译的LIB,最好用当前版本CB重新编译. 微软的LIB不能直接在CB中用。
MonkeyKingMKY 2014-04-18
  • 打赏
  • 举报
回复
不太清楚 你用的 是什么 编译器, C++Builder 中的 话 直接 Add 就可以 VS 的话, 得在 什么工程属性里 设置, C++Builder 的话 还可以 #pragma link "***.lib" 的方式
  • 打赏
  • 举报
回复
引用 11 楼 MonkeyKingMKY 的回复:
相当于重复定义 只不过发生在链接时
引用 1 楼 MonkeyKingMKY 的回复:
dll 放在 exe 同一个文件夹 lib 要在 编译器里 想方设法 引入 调用点 的 文件 要 扩入 函数的声明 或者 直接 include 你的 export 函数的 .h 文件
我在项目的属性中引用了这个lib(指定了lib的文件夹) 代码文件里也引用了一次。 就这个错误。 如果我在代码中不写这个#pragma co .. ilbc.lib 的话 。 他就会报找不到函数错误!
MonkeyKingMKY 2014-04-18
  • 打赏
  • 举报
回复
相当于重复定义 只不过发生在链接时
dfdsfa123 2014-04-18
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
  • 打赏
  • 举报
回复
引用 1 楼 MonkeyKingMKY 的回复:
dll 放在 exe 同一个文件夹 lib 要在 编译器里 想方设法 引入 调用点 的 文件 要 扩入 函数的声明 或者 直接 include 你的 export 函数的 .h 文件
我现在有一个iLBC.lib 引用进去后 就报错、 报错内容在6楼! 但是我一直找不到错误的原因!! 查了一些资料也还是不知道怎么解决这个错误!!
  • 打赏
  • 举报
回复
error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) 已经在 libcmtd.lib(invarg.obj) 中定义 error LNK2005: ___pInvalidArgHandler 已经在 libcmtd.lib(invarg.obj) 中定义 error LNK2005: __call_reportfault 已经在 libcmtd.lib(invarg.obj) 中定义 error LNK2005: __get_invalid_parameter_handler 已经在 libcmtd.lib(invarg.obj) 中定义 error LNK2005: __invalid_parameter 已经在 libcmtd.lib(invarg.obj) 中定义 这样的错误是什么意思?
  • 打赏
  • 举报
回复
我很奇怪就是为什么会这样报错。 我看过一个资料。 说有可能是编译方法 运行库 什么地不一致造成的。。 我刚才也看了下。 俩个都是静态库编译 多线程调试mtd 还是报错、。。
  • 打赏
  • 举报
回复
引用 3 楼 PPower 的回复:
#include "iLBC.h" #pragma link "iLBC.lib" //有了这行,就是告诉link程序,链接时加入iLBC.lib。把Lib文件添加到工程中作用也一样。
#include "ilbc.h" lib我是在项目属性中引用进去的。。 这样做还是会报错。 错误 2 error LNK2019: 无法解析的外部符号 __imp__ilbc_encoder@8,该符号在函数 "protected: void __thiscall CRecodeSound::OnSoundData(unsigned int,long)" (?OnSoundData@CRecodeSound@@IAEXIJ@Z) 中被引用 E:\1.WPF学习实例\VideoCapture\VideoCapture\RecodeSound.obj VideoCapture 错误 1 error LNK2019: 无法解析的外部符号 __imp__ilbc_init@0,该符号在函数 "public: __thiscall CRecodeSound::CRecodeSound(class CDialog *)" (??0CRecodeSound@@QAE@PAVCDialog@@@Z) 中被引用 E:\1.WPF学习实例\VideoCapture\VideoCapture\RecodeSound.obj VideoCapture
勉励前行 2014-04-17
  • 打赏
  • 举报
回复
#include "iLBC.h" #pragma link "iLBC.lib" //有了这行,就是告诉link程序,链接时加入iLBC.lib。把Lib文件添加到工程中作用也一样。
ccrun.com 2014-04-17
  • 打赏
  • 举报
回复
库文件(.lib)分两种,一种是动态库(.dll)的导入库,一种是静态库(包含实现部分),看起来你用的是第一种。 那么在你的工程中,包含了这个lib库对应的头文件以后,再把Lib文件添加到工程中就可以直接使用其中的函数了(Project-->Add to project)
MonkeyKingMKY 2014-04-17
  • 打赏
  • 举报
回复
dll 放在 exe 同一个文件夹 lib 要在 编译器里 想方设法 引入 调用点 的 文件 要 扩入 函数的声明 或者 直接 include 你的 export 函数的 .h 文件

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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