使用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
#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);
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);