dll,使用c代码

来源:互联网 发布:怎么注销阿里云账号 编辑:程序博客网 时间:2024/05/22 00:19

 

使用abldfreeze会输出一个def文件,里面包含DLL中导出函数等一些信息,def文件的作用应该是在产生LIB文件时用在参考,和使用DLL没有关系.
 
2版和3版的在Dll上的区别之一: 2版需要一个入口函数,
#include <e32uid.h>
#if !defined(EKA2)
GLDEF_C TInt E32Dll(TDllReason )
// DLL entry point
 {
 return(KErrNone);
 }
#endif
把包含这段代码的cpp加入到mmp中.

1.在C++中引用C的代码是最好加上“extern “C” {...}”,在用C编译的头文件中要有这样的修饰:
#ifdef __cplusplus
extern "C" {
#endif
 
...
 
#ifdef __cplusplus
}
#endif;
2. 在MMP文件中要加入“estlib.lib”,该LIB库是C标准语言的LIB库;
   在程序退出之前要调用CloseSTDLIB(),以释放所有缓冲,该函数在“reent.h”文件中
3.在C++与C的交互接口中会存在如char*与TdesC之间的转换,可以这样转换,例如:
 把TDesC转换成char*:
    HBufC8* utf8TempText = HBufC8::NewLC(STRING_LENGTH);
              TPtr8 utf8Text(utf8TempText->Des());                               
              CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8Text,TDesCString);  
          Char*  cString = (char*)utf8Text.Ptr();
 把char*转换成TPtr:
    TPtr8 utf8Text((TText8*)cString,strlen(cString),strlen(cString));
         HBufC* ucs2TempText = HBufC::NewLC(utf8Text.Length()*2);
         TPtr ucs2Text(ucs2TempText->Des()); 
         CnvUtfConverter::ConvertToUnicodeFromUtf8(ucs2Text,utf8Text);



http://wiki.forum.nokia.com/index.php/%E7%A7%BB%E6%A4%8Ds60%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%AC%AC%E4%BA%8C%E7%89%88%E5%88%B0%E7%AC%AC%E4%B8%89%E7%89%88

原创粉丝点击