我要调用的东西的名称是mcs_sc.dll另外还有mcs_sc.h和mcs_sr.lib  
 请问如果效用其中的函数,delphi建立的工程需要包含什么文件吗?需要安装什么package或者什么library吗?
  我现在在delphi的implementation下面添加了下面的代码:
function MCS_InitComm (bPort : Byte; dwCommBaudRate : Longint) : Integer; stdcall;
  external 'MCS_SR.dll' Name 'MCS_InitComm';
在一个button的事件中写了下面的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  a : String ;
begin
  i := mcs_initcomm(0,19200);
  showmessage(inttostr(i)) ;〕
end;MCS_InitComm 函数是在vb编写的dll中定义的,如果这个函数的返回值是0代表调用成功,如果不为0代表调用错误  我在这个delphi的工程中没有作任何修改,就是一个刚刚建立的工程,但是他的返回值是一个很大的数,如果放在另外一个工程中是另外一个值,但是同一个工程中的值不管运行多少遍都是一样的!  请问在什么地方出了问题?

解决方案 »

  1.   

    用regsvr32 注册一下你的dll再试试。
    **个人意见,仅供参考
      

  2.   

    请问怎么注册?我用的是win98的系统,在开始菜单的运行中输入regsvc32 MCS_SR.dll这条语句进行注册,需要加路径吗?应该把这个dll放在什么地方?我现在是放在c:\windows\system下面!
      

  3.   

    把你的MCS_SR.dll放到c:\windows\system还是c:\windows\system32你自己侃侃,里面是一大队dll。关键是用regsvr32 MCS_SR.dll,不是regsvc32 MCS_SR.dll
      

  4.   

    还有一种在当前目录注册dll的方法,首先你在运行窗口浏览到你的dll文件,然后在前面加上regsvr32和空格隔开,就可以注册你的dll了。注意要更改浏览对话矿的文件类型到所有文件,否则只能看到程序文件的
      

  5.   

    我现在用regsvr32 MCS_SR.dll进行注册,出现的结果是:  MCS_SR.dll was loaded,but the DLLRegisterServer entry point was not found.
      DLLRegisterServer may not be exported,or a corrupt version of MCS_SR.dll may be in memory.
      Consider using PView to detect and remove it.   这个时候应该怎么办?
      

  6.   

    这就是你的dll制作有问题!
    是不是把exports快中,应该给出对外开放的函数借口的。例如:
    exports
    MCS_InitComm  index 1 这种类似的语句。你的问题至少出在dll中,因为你不能注册,说明系统都识别不出来你的dll,何况你开发的程序呢。
    还是侃侃dll的工程吧。
      

  7.   

    但是在VB中没有问题阿!这个dll是所用到的一个硬件工具带有的一个用VB写的一个连接库!请问这样是不是不能调用?
      

  8.   

    通常情况下dll不必注册的呀
    你就把DLL放到你EXE一个目录下,然后在delphi里声明:
    function MyDllFunction()  ;external yourdll.dll;
    就可以了
      

  9.   

    VB的int类型是16位的
    它的long才等于delphi的integer
    你考虑一下是不是这个原因
      

  10.   

    返回值用 smallint 或 word 试试