CB生成DLL时,哪个编译选项可以去掉前缀下划线(_)??
我不想修改源代码。
应该有这个开关的吧。
[解决办法]
C++Builder里面都可以从项目设置中更改默认的函数调用规范,改成__stdcall试试看。
在C++ Builder中C调用规则是缺省的设置,可以通过Project的Option菜单在Advanced Compiler标签中来改变缺省设置
[解决办法]
我加了以下 project.def 文件到工程中
LIBRARY BCBDLL.DLL
EXPORTS
BCBDllFastcall = @BCBDllFastcall
BCBDllCdecl = _BCBDllCdecl
BCBDllStdcall = BCBDllStdcall
最后导出多了两个函数(用VS6带的 depends 查看)
BCBDllStdcall
_BCBDllCdecl
@BCBDllFastcall
___CPPdebugHook
BCBDllFastcall
BCBDllCdecl
我的代码
/************************************************************************* Function name : BCBDllStdcall* Description : BCB Dll by __stdcall mode* Parameters : -* Returns : LPSTR* Author : Behard* ----------------------------------* Date By Description* ----------------------------------* 05Mar03 Behard Created.************************************************************************/extern "C" __declspec(dllexport) LPSTR __stdcall BCBDllStdcall(void){ static char strRetStdcall[256] = "BCB Dll by __stdcall mode is OK!"; return strRetStdcall;} /************************************************************************* Function name : BCBDllCdecl* Description : BCB Dll by __cdecl mode* Parameters : -* Returns : LPSTR* Author : Behard* ----------------------------------* Date By Description* ----------------------------------* 05Mar03 Behard Created.************************************************************************/extern "C" __declspec(dllexport) LPSTR __cdecl BCBDllCdecl(void){ static char strRetCdecl[256] = "BCB Dll by __cdecl mode is OK!"; return strRetCdecl;} /************************************************************************* Function name : BCBDllFastcall* Description : BCB Dll by __fastcall mode* Parameters : -* Returns : LPSTR* Author : Behard* ----------------------------------* Date By Description* ----------------------------------* 05Mar03 Behard Created.************************************************************************/extern "C" __declspec(dllexport) LPSTR __fastcall BCBDllFastcall(void){ static char strRetFastcall[256] = "BCB Dll by __fastcall mode is OK!"; return strRetFastcall;}