当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如题!!! ......
 ·在线等待,    »显示摘要«
    摘要: 请问如何在数据窗口的指定行,指定列,设置焦点!! ......


vc6.0的bug

用vc6.0创健dll时发现了一个bug  
  选择win32dynamic-link   libary  
  然后选择   A   dll   that   exports   some   symbols创建一个工程  
  用这种方法生成的dll不能使用,因此编译器在生成dll的时候  
  莫名其妙的给每个函数前加上了一些字符  
  比如你写的Dll里面有一个函数GetName(),生成的Dll里面函数名  
  会变成??GetName()之类的名字,这样在调用GetProcAddress时就会出错  
  不知道有没有   人知道其解决方法

NO.1   作者: o_racle

这不是Bug,编译器会将导出函数编译为C++、C...等等下的函数。

NO.2   作者: oak72

你可以用相关工具如Editplus或depend打开dll,找到该外部函数名,连同这些乱七八糟的字符一并复制到调用的函数名位置,如:   GetProdcessAderss(hInstance,"此处为带有乱七八糟的字符函数名");

NO.3   作者: wlzqi

这不是bug,如果把dll写成纯资源的形式就可以避免了

NO.4   作者: o_racle

一般显式链接DLL和使用DLL中函数的例子:  
  1.DLL中有如下函数:  
  void   Initialize()  
  {  
        AfxMessageBox(_T("Hello!"));  
  }  
   
   
  2.EXE中调用:  
  HMODULE   hDll   =   LoadLibrary(mydll.dll);  
  ASSERT(hDll);  
  typedef   void(*FUN)();  
  FUN   pfun;  
  pfun   =   (FUN)GetProcAddress(hDll   ,   "Initialize");//   通过函数名称,得到函数地址  
   
  if(!pfun)  
  {  
  AfxMessageBox(_T("函数地址为空!"));  
  return;  
  }  
  else  
  {  
  (*pfun)();   //   调用Initialize函数  
  }  
   
   
 


    摘要: 我只有c++的基础,其它都不懂,学vc要分几个阶段?哪个阶段要读什么书. ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE