大师们!
小弟遇到这样的一个问题。
我在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);
。。。
。。。
。。。
}
我的分给不了太多了!不过我一定给,小弟急求!麻烦大家赏赐个答案
对于静态库,应该在EVC的Setting中进行设置,增加对它的引用。
动态库,需要使用LoadLibrary()来加载。
楼主用过EVC或VC吗?
在网上查,这种问题很好解决的。
用过阿。。。莫非我这种程度不算用过,,,
我查了。。。看上去这个问题似乎很难解决。。。
大家的意思是你需要在项目中加入对dll的加载。
project-setting-link-object/library modules:下添加 Mwic_32.lib
unresolved external symbol ic_init 的意思很明白就是有头文件,但是找不到库啊。
我确实按照lenux说的那样子干了~不过确实没有效果。。
我也觉得是lenux的原因~可是为什么还是弄不好呢
怪了。。。
我在VC++下按照lenux说的就没问题,可是在EVC下就有问题
根据lenux的提示,看来我对91program的理解还是正确的~~
呵呵
我是在EVC下,总是会出现那个LNK2019。
我在VC下和EVC下进行了同样的操作~
WINCE下的dll不能在pc环境下的编译器中被加载
现在那个dll是PC环境下的~
我想的是把程序和dll都下到CE平台上去
不过现在编译出现的问题不知道是不是因为dll原因引起的~~
我是搂主。还是不行,同样的情况在VC下可以运行,在EVC下运行不了。我也换了它给我发过来的Windows CE的新库
不会需要在程序里面写复杂的代码,自己调用他的dll吧?
我前不久用了loadlibrary()很可惜,不行
干了。。。厂家那边也在咨询evc下用他们的库如何做。。 帮我解答的人居然不知道Windows CE和EVC的关系是什么。。。
我快哭了。。
是个小问题而已,lib库的生成和引用是有正确方法的,你没搞清楚所以才乱成一团。