关于evc下,添加新头文件的问题,.lib文件和dll的问题

twobyte   2007-11-20 10:33 楼主
大师们!
    小弟遇到这样的一个问题。
    我在Arm的板子上要开发一个读些IC读卡器的程序。IC读卡器提供了Windows.dll的驱动。其中有Mwic_32.dll,Mwic_32.lib,Mwic_32.h三个文件。
    我首先将Mwic_32.h文件添加到了工程中,并且将Mwic_32.lib靠到了工程相对应的文件夹。把Mwic_32.dll放进了工程Release的文件夹。
    并且在我要运行的那个.cpp文件中添加了#include "Mwic_32.h"头文件
    在某个函数中写了该驱动提供的函数ic_init(port,baud);
    但是,当我编译时,出现了如下错误:
     error LNK2019: unresolved external symbol ic_init referenced in function "public:void __cdecl CComTestDlg::CardConnInit(void)"(?CardConnInit@CComTestDlg@@QAAXXZ)
   
    我加入的Mwic_32.h头文件内容大概是
extern "C"
{
//**********************    commual subroutine    ***********************
HANDLE __stdcall  ic_init(__int16 port,unsigned long baud);
HANDLE __stdcall  auto_init(__int16 port,unsigned long baud);
__int16 __stdcall ic_exit(HANDLE icdev);
__int16 __stdcall srd_ver(HANDLE icdev, __int16 len,
                                                  unsigned char *data_buffer);
__int16 __stdcall set_baud(HANDLE icdev, unsigned long baud);
__int16 __stdcall cmp_dvsc(HANDLE icdev, __int16 len,
                                                   unsigned char *data_buffer);
__int16 __stdcall srd_dvsc(HANDLE icdev, __int16 len,
                                                        unsigned char *data_buffer);
__int16 __stdcall swr_dvsc(HANDLE icdev, __int16 len,
                                                         unsigned char *data_buffer);
__int16 __stdcall setsc_md(HANDLE icdev, __int16 mode);
。。。
。。。
。。。
}

我的分给不了太多了!不过我一定给,小弟急求!麻烦大家赏赐个答案

回复评论 (26)

对于静态库,应该在EVC的Setting中进行设置,增加对它的引用。
动态库,需要使用LoadLibrary()来加载。
点赞  2007-11-20 10:53
能再具体点么?你说的我其实不是很明白
点赞  2007-11-20 11:01
楼主用过EVC或VC吗?
在网上查,这种问题很好解决的。
点赞  2007-11-20 11:41
用过阿。。。莫非我这种程度不算用过,,,
我查了。。。看上去这个问题似乎很难解决。。。
点赞  2007-11-20 11:45
大家的意思是你需要在项目中加入对dll的加载。

project-setting-link-object/library modules:下添加 Mwic_32.lib

unresolved   external   symbol   ic_init   的意思很明白就是有头文件,但是找不到库啊。
点赞  2007-11-20 12:25
我确实按照lenux说的那样子干了~不过确实没有效果。。
我也觉得是lenux的原因~可是为什么还是弄不好呢
点赞  2007-11-20 13:51
怪了。。。
我在VC++下按照lenux说的就没问题,可是在EVC下就有问题
根据lenux的提示,看来我对91program的理解还是正确的~~
呵呵
点赞  2007-11-20 14:08
你在那个lib里搜一下看看有没有这个函数
点赞  2007-11-20 14:12
我是在EVC下,总是会出现那个LNK2019。
我在VC下和EVC下进行了同样的操作~
点赞  2007-11-20 14:13
不会那些库只能在pc机上使用吧
点赞  2007-11-20 14:14
有那个函数~
点赞  2007-11-20 14:17
啊!那我就疯了。。我问问厂家吧。。
点赞  2007-11-20 14:17
WINCE下的dll不能在pc环境下的编译器中被加载
点赞  2007-11-20 14:23
现在那个dll是PC环境下的~
我想的是把程序和dll都下到CE平台上去
不过现在编译出现的问题不知道是不是因为dll原因引起的~~
点赞  2007-11-20 14:25
厂家要给我发一个新库。。。。幸亏打电话了。。
点赞  2007-11-20 14:33
我是搂主。还是不行,同样的情况在VC下可以运行,在EVC下运行不了。我也换了它给我发过来的Windows CE的新库
点赞  2007-11-22 11:01
不会需要在程序里面写复杂的代码,自己调用他的dll吧?
我前不久用了loadlibrary()很可惜,不行
点赞  2007-11-22 11:02
干了。。。厂家那边也在咨询evc下用他们的库如何做。。  帮我解答的人居然不知道Windows CE和EVC的关系是什么。。。
我快哭了。。
点赞  2007-11-22 11:13
是个小问题而已,lib库的生成和引用是有正确方法的,你没搞清楚所以才乱成一团。
点赞  2007-11-22 12:36
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复