一些库在它们的功能的一部分中加载其他库。例如,Crystal Reports 对象工厂使用 CreateObject() 方法来创建一个 Crystal Design RunTime 应用程序的实例。如果要使用新加载的库中定义的常量,则需要手动注册该库 - 即使 com.autoregister_typelib 设置为 true。
<?php
echo 'com.autoregister_typelib = ', ini_get('com.autoregister_typelib'), PHP_EOL;
$o_CrObjectFactory = New COM('CrystalReports11.ObjectFactory.1');
$o_CrApplication = $o_CrObjectFactory->CreateObject("CrystalDesignRunTime.Application");
echo 'Will not be defined : ', crOpenReportByDefault, PHP_EOL;
com_load_typelib('CrystalDesignRunTime.Application');
echo 'Will now be defined : ', crOpenReportByDefault, PHP_EOL;
?>
输出...
com.autoregister_typelib = 1
未定义
注意:在 C:\refl.php 第 8 行使用未定义的常量 crOpenReportByDefault - 假设为 'crOpenReportByDefault'
crOpenReportByDefault
现在已定义:0