读书人

[新手]怎么再次封装dll

发布时间: 2012-01-30 21:15:58 作者: rapoo

[新手]如何再次封装dll
需求是这样的,我现在拿到一个dll,但是他并不符合程序的需求,我需要把他封装成另外一个dll,但是总是编译不过。(我不是做vc的,但是没有人搞这个东西,被逼来搞vc了,所以问题可能很新手,望多多指教,谢谢)

环境:vc6

目前我有dll,lib和def以及它导出的h文件。

我的步骤,File-> New-> Projects-> Win32 Dynamic-Link Library

写了如下的文件:
Printer.h(这个是导入那个动态链接库的头文件)
#define DLLIMPORT __declspec(dllimport)

DLLIMPORT bool __stdcall ZQOpenPrinter(LPSTR);

T.H(这个是我再次封装,想导出的头文件)
#define DLLEXPORT __declspec(dllexport)

DLLEXPORT bool OpenPrinter(LPSTR);

在我的主函数里调用如下:
#include "stdafx.h "
#include "Printer.h "
#include "T.h "

DLLEXPORT bool OpenPrinter(LPSTR printName){
return ZQOpenPrinter(printName);
}


在Project-> Setting-> Link-> Object/Library modules add the lib file.
编译报错:
Linking...
Creating library Debug/T.lib and object Debug/T.exp
T.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) bool __stdcall ZQOpenPrinter(char *) " (__imp_?ZQOpenPrinter@@YG_NPAD@Z)
Debug/T.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

T.dll - 2 error(s), 0 warning(s)



[解决办法]
去掉这个,不要再定义一次导入

Printer.h(这个是导入那个动态链接库的头文件)
#define DLLIMPORT __declspec(dllimport)
DLLIMPORT bool __stdcall ZQOpenPrinter(LPSTR);
[解决办法]
要把lib文件添加到工程中间
不是简单拷进来
[解决办法]
可能你的lib库路径没放好,呵呵
[解决办法]
你需要的函数已经在printer.h里面声明过了,你又声明一次。。。

读书人网 >VC/MFC

热点推荐