C++Builder 2007深入体验之冰火两重天
来源:互联网 发布:罗斯科简单 知乎 编辑:程序博客网 时间:2024/05/01 23:44
早在BCB2007发布之前已经听说该版本的兼容性比较好,这次好好的体验了一把.上次我在 http://blog.csdn.net/lqglaive/archive/2007/06/11/1647850.aspx上提到TMS IntraWeb Component Pack Pro控件无法使用的问题就是通过BCB2007对BCB2006控件的兼容性来解决的,首先下载TMS IntraWeb Component Pack Pro控件的BDS2006 for C++Builer版,然后直按安装,安装后不用编译(编译是通不过的,会说资源重复)直接就可以使用了,而且是已经注册的.这一功能确实是让人爽了一把,但却在使用中又发现了BCB2007的一个Bug,一个真正的Bug.当我使用VCL for the Web建立WEB应用程序时,当使用StandAlone Application模式时完全正常,但当使用ISAPI Extension模式时发现发布后的DLL根本不会工作,经过工程文件的对照发现了蛛丝马迹,下图是StandAlone Application模式的工程文件:
下图是ISAPI Extension模式的工程文件:
经对比就可以发现在ISAPI Extension模式中缺少工程的源文件Project1.cpp对BDS2006中的ISAPI Extension模式工程的工程源文件进行分析发现:
//---------------------------------------------------------------------------
#include <ActiveX.hpp>
#include <ComObj.hpp>
#include <WebBroker.hpp>
#include <ISAPIApp.hpp>
#include <ISAPIThreadPool.hpp>
#include <Isapi2.hpp>
#include <IWInitISAPI.hpp>
#pragma hdrstop
USEFORM("Unit1.cpp", IWForm1); /* TIWAppForm: File Type */
USEFORM("ServerController.cpp", IWServerController); /* TIWServerControllerBase: File Type */
USEFORM("UserSessionUnit.cpp", IWUserSession); /* TIWUserSessionBase: File Type */
//---------------------------------------------------------------------------
#define Application Webbroker::Application
#pragma link "isapiapp.obj"
#pragma link "isapithreadpool.obj"
#pragma link "webbroker.obj"
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
try {
switch (reason) {
case DLL_PROCESS_ATTACH: {
CoInitFlags = COINIT_MULTITHREADED;
IWRun();
break;
}
}
}
catch (Exception &exception)
{
}
return 1;
}
//---------------------------------------------------------------------------
extern "C"
{
BOOL __declspec(dllexport) WINAPI GetExtensionVersion(Isapi2::THSE_VERSION_INFO &Ver)
{
return Isapithreadpool::GetExtensionVersion(Ver);
}
//---------------------------------------------------------------------------
unsigned __declspec(dllexport) WINAPI HttpExtensionProc(Isapi2::TEXTENSION_CONTROL_BLOCK &ECB)
{
return Isapithreadpool::HttpExtensionProc(ECB);
}
//---------------------------------------------------------------------------
BOOL __declspec(dllexport) WINAPI TerminateExtension(int dwFlags)
{
return Isapithreadpool::TerminateExtension(dwFlags);
}
}
//---------------------------------------------------------------------------
#undef Application
//---------------------------------------------------------------------------
正是导出函数GetExtensionVersion、HttpExtensionProc、TerminateExtension决定了DLL在WEB服务器上的工作方式,回过头来再用
eXeScope来分析Project1.dll发现导出函数中正是少了这三个函数,我真的无语!!!!!!在工程中导入上面的Project1.cpp后成功,但对网页模板的支持好象还是有问题,正在进一步研究中。CodeGear说爱你不容易啊!
- C++Builder 2007深入体验之冰火两重天
- HTML5欧亚冰火两重天
- HTML5欧亚冰火两重天
- 深入试用C++Builder 2007
- C#Builder初体验
- IT行业就业的“冰火两重天”
- 窝囊少爷 第二章 冰火两重天
- HTML5在欧亚冰火两重天
- 跨境电商与外贸B2B:冰火两重天
- c++builder xe4 体验记
- C++builder XE4 体验记
- 系统间通信方式之(ActiveMQ的使用性能优化之冰火两重天5)(十六)
- 金融风暴来袭 互联网显现冰火两重天
- HTML5欧亚冰火两重天 Fireox OS非唯一希望
- 感受C++Builder 2007
- 冰火两重天 e-HR给传媒业带来了啥?
- 冰火两重天----评NBA2009-12-28快船和凯尔特人的比赛
- 项目管理手记(29)ERP项目高层大力支持的冰火两重天
- mysql安装
- 将sqlserver的数据导入Mysql中
- 日本很关心北京的缺水问题呀
- 电脑变慢完全解决方案
- core net wireless net
- C++Builder 2007深入体验之冰火两重天
- MySQL忘记超级用户口令的解决办法
- N、XR、XD、DR”各代表什么意思
- sqlserver导入导出命令大全
- VNCServer的配置
- Spring中配置数据源
- 在程序中获得驱动器盘符的方法,附源程序,可在VC7.1下编译运行
- WSAAsyncSelect介绍【转】
- 查询字五笔打法的window自带方法