VS自动执行批处理将ocx文件导出为C#动态库
一、C#程序使用C++开发的ocx组件(假设名称为Chart.ocx),使用时需要工具Aximp.exe将ocx组件导出C#能直接使用的动态库:
1、AxChart.dll
2、ChartLib.dll
二、由于这个生成过程稳定,因此考虑使用批处理自动化执行,具体思路是:
1、在C++项目:Chart中增加批处理自动生成脚本:ExportChartDll.bat
2、配置Chart项目设置,在生成后事件命令行中执行该脚本
三、下面实现这个想法:
1、创建一个批处理文件:ExportChartDll.bat,放到Chart项目根目录下
2、编写批处理脚本
(1)定位到项目生成目录
1 set CurrentDir=%~dp0 2 echo %CurrentDir%
(2)定位到Chart.ocx文件
当生成Debug或Release模式不同时目录是不同的,因此要求能灵活根据编译设置动态匹配Chart.ocx的路径
VS提供了获取当前编译目录的宏定义,可以定位到Debug或Release的完整目录:cd $(TargetDir)
完整的ExportChartDll.bat内容如下:
1 set CurrentDir=%~dp0
2 echo %CurrentDir%
3
4 REM 拼接Chart.ocx路径
5 set ChartOcxPath=%CurrentDir%\Chart.ocx
6 echo %ChartOcxPath%
7
8 REM 拼接AxImp.exe程序绝对路径,为方便调用,将AxImp.exe添加到Chart项目的根目录下,生成路径与Chart.ocx相同
9 set AxImpExePath=%CurrentDir%\AxImp.exe
10 echo %AxImpExePath%
11
12 REM 调用AxImp.exe程序执行导出C#动态库
13 call %AxImpExePath% %ChartOcxPath%
3、VS中配置项目“生成后事件命令行”
(1)右键Chart项目,选择“属性”,选择“生成事件”
(2)找到“生成后事件命令行”,编写如下命令:
1 cd $(TargetDir) 2 ExportChartDll.bat
说明:
(1)cd $(TargetDir):用来定位ExportChartDll.bat 所在目录
(2)ExportChartDll.bat:执行批处理ExportChartDll.bat
4、测试验证
Debug或Release模式编译项目Chart,在bin\Debug或bin\Release目录中生成三个文件:
(1)Chart.ocx
写写画画,神奇的事情发生了
浙公网安备 33010602011771号