您的位置:程序门 -> vc/mfc -> 进程/线程/dll



vc 调用 dll问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vc 调用 dll问题[已结贴,结贴人:zbk502]
发表于:2008-02-03 10:29:54 楼主
我有一dll连接库,在vb里是这样调用的
public   declare   function   portopen   lib   "bc245g.dll"   (byval   port   as   long)   as   long
dim   ret   as   integer
    ret   =   portopen(edtcommport.text)
    if   ret   <>   1   then
        label1.caption   =   "打开串口失败"
    else
        label1.caption   =   "打开串口成功"
    end   if
vb里调用没问题
然后我在vc里这样调用
hinstance   hmodule   =   loadlibrary("bc245g.dll");
if(hmodule)
{
typedef   long   int   (__stdcall   *portopen)   (long   int);
portopen   open   =   (portopen)::getprocaddress(hmodule,   "portopen");
if(open)
{
cstring   str;
str.format("%d",m_port);
str="没有发现com"+str+"或被占用";
m_bserialportopened[m_port-1]=true;
if(open(m_port)!=1)
{
m_bserialportopened[m_port-1]=false;
afxmessagebox(str);
}
}
freelibrary(hmodule);
hmodule   =   null;
}
else   afxmessagebox("dll文件未找到!");
这是一个打开串口的程序,其中if(open(m_port)!=1)   返回值是1,代表是成功的,但是实际上想打开的串口并没有打开,可为什么返回值还是正确的呢?请各位高手帮忙帮忙!
发表于:2008-02-03 12:28:491楼 得分:10
换其它电脑试试..
发表于:2008-02-03 13:38:272楼 得分:0
跟电脑有关系吗?
有这样的情况,比如我先用vb打开com1,再用上面的vc代码打开com1就会提示打开失败!但若是反过来做,确可以再打开
发表于:2008-02-03 13:48:383楼 得分:10
是不是端口打开后没有关闭或进行其它资源释放操作??
发表于:2008-02-03 13:51:574楼 得分:0
有关闭,我说的反过来做确可以再打开,意识是   返回值是对的,但是实际上串口并没真正的打开
发表于:2008-02-03 13:52:535楼 得分:0
这个dll是   delphi   语言写的
发表于:2008-02-03 14:28:456楼 得分:0
是不是有什么初始化的操作在vc中没有做??
发表于:2008-02-03 14:33:587楼 得分:0
我想用#import   "e:\xxx.dll"   加载,可提示加载失败
发表于:2008-02-03 14:40:168楼 得分:0
你这dll是普通的dll还是com??   只有com才能#import   "e:\xxx.dll"


快速检索

最新资讯
热门点击