.h文件和.lib文件 生成dll,供别的开发工具来调用

lllyyymmm 2011-11-18 02:12:11
厂家只提供了.h文件和.lib文件,如何生成dll文件,以供我来调用
.h 文件部份内容如下:
extern int a1(char *i1, int p1, char *lk, char *mk);
各位帮帮忙,说详细点,分不够还可以再加,因为我不会用vc,所以看了上网搜索也是看得一头雾水.
...全文
296 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liozzlee 2013-04-10
  • 打赏
  • 举报
回复
引用 11 楼 cumthyw 的回复:
引用 10 楼 enigma_cn 的回复:用vc建一个dll工程吧 包含那个头文件和静态库 然后把自己需要的函数导出++
能说详细一点吗?我针对lib中某几个函数做了输出,生成了dll,但是在调这个dll的时候无法得到这几个函数的地址。
lllyyymmm 2011-11-18
  • 打赏
  • 举报
回复
公 开一下
asp_api.h,asp_api.lib
其中 asp_api.h内容如下:
#ifndef _ASP_API_H
#define _ASP_API_H

//操作错误代码
//初始化错误代码


/****************************************************************
* 名 称: int initSmgpConn(char *ip, int port, char *userId, char *passwd)
* 功 能: 初始化函数,创建链路维护线程,发送线程,接收线程,和缓存区。
* 输 入: ip 电信二级网关IP
port 电信二级网关服务端端口
userId 登录用户名
passwd 登录口令
* 输 出: 无
* 返 回: 1 成功; <0 失败
* 注 意: 此函数要先调用,
****************************************************************/
extern int initSmgpConn(char *ip, int port, char *userId, char *passwd);

/****************************************************************
* 名 称: int sendSmgpSubmit(unsigned int seqId, char *srcAddr, char *dstAddr, unsigned char msgFmt, unsigned char msgLen, char *content, unsigned char needRpt)
* 功 能: 发送短信函数,即MT
* 输 入: seqId 短信序号,用于应答匹配。
srcAddr 主叫
dstAddr 被叫
msgFmt 短消息内容格式 0: ASCII, 15: GB2312, 8: ucs2
msgLen 短消息内容长度,不能超过255
content 短信内容
needRpt 是否需要回执,0:不需要,1:需要
* 输 出: 1 成功, -1 失败
* 返 回: 打包长度
* 注 意: seqId与短信应答进行匹配时使用。目前网关多数情况下用15: GB2312格式下行
****************************************************************/
extern int sendSmgpSubmit(unsigned int seqId, char *srcAddr, char *dstAddr, unsigned char msgFmt, unsigned char msgLen, char *content, unsigned char needRpt);

/****************************************************************
* 名 称: int recvSmgpSubmitRsp(int *seqId, char *msgId, int *status)
* 功 能: 从应答缓冲区接收短信应答函数
* 输 入: *seqId 短信序号
*msgId 短消息在网关的ID号
*status 应答值,0 成功,其它:失败。
* 输 出: seqId,msgId,status
* 返 回: 0 无数据,1 有数据
* 注 意: 无
****************************************************************/
extern int recvSmgpSubmitRsp(int *seqId, char *msgId, int *status);

/****************************************************************
* 名 称: int recvSmgpSubmitRpt(char *msgId, char *err, char *srcAddr, char *dstAddr)
* 功 能: 从短信回执缓冲区接收短信状态报告
* 输 入: *msgId 短消息在网关的ID号
*err 短信最终结果,0 成功下行,其它:失败
*srcAddr 回执主叫
*dstAddr 回执被叫
* 输 出: *msgId, *err, *srcAddr, *dstAddr
* 返 回: 0 无数据,1 有数据
* 注 意: 短信状态报告中的主叫、被叫与短信发送时相反。
****************************************************************/
extern int recvSmgpSubmitRpt(char *msgId, char *err, char *srcAddr, char *dstAddr);

/****************************************************************
* 名 称: int recvSmgpDeliver(unsigned int *seqId, char *srcAddr, char *dstAddr, unsigned char *msgFmt, unsigned char *msgLen, char *content)
* 功 能: 从上行短信缓冲区接收终端用户上行短信
* 输 入: *seqId 短信序号
srcAddr 主叫
dstAddr 被叫
msgFmt 短消息内容格式 0: ASCII, 15: GB2312, 8: ucs2
msgLen 短信内容长度
content 短信内容
* 输 出: *seqId, *srcAddr, *dstAddr, *msgFmt, *msgLen, *content
* 返 回: 0 无数据,1 有数据
* 注 意: 目前网关多数情况下用15: GB2312格式上行
****************************************************************/
extern int recvSmgpDeliver(unsigned int *seqId, char *srcAddr, char *dstAddr, unsigned char *msgFmt, unsigned char *msgLen, char *content);

/****************************************************************
* 名 称: void exitSmgpConn()
* 功 能: 退出连接
* 输 入: 无
* 输 出: 无
* 返 回: 无
* 注 意: 无
****************************************************************/
extern void exitSmgpConn();

#endif
////////////////////////////////
cumthyw 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 enigma_cn 的回复:]
用vc建一个dll工程吧

包含那个头文件和静态库

然后把自己需要的函数导出
[/Quote]++
Occam's_Razor 2011-11-18
  • 打赏
  • 举报
回复
用vc建一个dll工程吧

包含那个头文件和静态库

然后把自己需要的函数导出
yisiyou 2011-11-18
  • 打赏
  • 举报
回复
这个貌似不能调用,.lib文件的目的就是防止别人窃取代码,你可以直接用啊。但是别人的代码内容你是看不见的。
lllyyymmm 2011-11-18
  • 打赏
  • 举报
回复
因为是用pb的开发工具,没办法直接调用,要生成dll才能调用,比较麻烦.
oyljerry 2011-11-18
  • 打赏
  • 举报
回复
有了h,lib就直接调用好了
o_yale_o 2011-11-18
  • 打赏
  • 举报
回复
人家给你h和lib你直接用就行了:你应该问怎么用?(直接“#pragma comment( lib, "xxx.lib" )”)
不用生成DLL!!!
yyps 2011-11-18
  • 打赏
  • 举报
回复
哦,静态方式的话 .dll可以不要。
yyps 2011-11-18
  • 打赏
  • 举报
回复
这是静态调用DLL的方式

静态调用其步骤如下:
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;
2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;
3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目
录下;
4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的Settings菜单;
5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然
后在Object/library modules输入框中输入:youApp.lib
6.选择你的目标工程Head Files加入:youApp.h文件;
7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:#include "youApp.h"
注:youApp是你DLL的工程名。

jiuchang 2011-11-18
  • 打赏
  • 举报
回复
有这两个文件就够了,为啥非要动态库呢
如果需要,只能重新包一层了
Occam's_Razor 2011-11-18
  • 打赏
  • 举报
回复
什么意思? 厂家给你了 lib 文件和 .h文件么?

估计是静态库

直接 include .h文件

把lib加到工程里面就ok了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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