SF1709841 Visual C++ 8.0 Visual Studio 2005 compilation. No longer requires VC98 or 2003 Platform SDK.

This commit is contained in:
clay_shooter
2007-04-30 02:37:00 +00:00
parent 9c23a727c2
commit e98dc4b0cf
12 changed files with 476 additions and 493 deletions

247
build.xml
View File

@@ -5,32 +5,21 @@
Created Feb 4, 2005 1:23:05 PM as part of migration from ANT Created Feb 4, 2005 1:23:05 PM as part of migration from ANT
Last Modified March 24, 2007 Last Modified March 24, 2007
Tested on Eclipse 3.2 with the Callisto plugis, Ant 1.6.1 and MS Visual C++ 6.0 Tested on Eclipse 3.2 with the Callisto plugis, Ant 1.6.1 and MS Visual C++ 8 (2005)
Eclipse users are pretty lucky because the whole project Eclipse users are pretty lucky because the whole project
can be built inside eclipse due to their built in ANT support. can be built inside eclipse due to their built in ANT support.
The COM portion of this build requires MS Visual C++ 6.0. The COM portion of this build requires MS Visual C++ 8.0. (2005)
The build proces defined in this build.xml file does not support The build proces defined in this build.xml file does not support
MS Visual C++ 8.0 (Visual C++ 2005 Express) when combined with the MS SDK.
The problem is that SafeArray.cpp will not compile because some of the
types have changed sizes in the newer 64bit aware world.
YOU MUST define a file named compilation_tools.properties! YOU MUST define a file named compilation_tools.properties!
The file for MS Visual C++ 6.0 building only the 32 bit version The file for MS Visual C++ 8.0 building 32 and 64 bit
(releases up to 1.11 only supported 32 builds) looks something like: (releases up to 1.11 only supported 32 builds) looks something like:
JDK=d:/j2sdk1.4.2_13 JDK=d:\\j2sdk1.4.2_14
MSDEVDIR=d:\\apps\\Microsoft Visual Studio\\VC98 MSDEV_DIR=d:\\apps\\Microsoft Visual Studio 8\\VC
version=1.11-pre2 MSDEV_IDE_DIR=d:\\apps\\Microsoft Visual Studio 8\\Common7\\IDE
version=1.13
Construction with 64 bit support requires the MS Platform SDK.
compilation_tools.properties in this situation should look
something like:
JDK=d:/j2sdk1.4.2_13
MSDEVDIR=d:\\apps\\Microsoft Visual Studio\\VC98
MSSDKDIR=D:\\Apps\\Microsoft Platform SDK for Windows Server 2003 R2
version=1.11-pre2
DO NOT check compilation_tools.properties into source control as the DO NOT check compilation_tools.properties into source control as the
values are specific to YOUR environment. values are specific to YOUR environment.
@@ -46,14 +35,12 @@
Relies on the fact that properties cannot be reset once set. Relies on the fact that properties cannot be reset once set.
================================================================== --> ================================================================== -->
<property file="compilation_tools.properties" /> <property file="compilation_tools.properties" />
<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<property name="JDK" value="JDK not set in compilation_tools properties file"/> <property name="JDK" value="JDK not set in compilation_tools properties file"/>
<!-- MSDEVDIR is a required parameter so set to a message if its not set --> <!-- MSDEV_DIR is a required parameter so set to a message if its not set -->
<property name="MSDEVDIR" value="MSDEVDIR not set in compilation_tools properties file"/> <property name="MSDEV_DIR" value="MSDEV_DIR not set in compilation_tools properties file"/>
<!-- MSSDKDIR is an optional parameter. It is set to the same as MSDEVDIR if not specified <echo message="executing with MSDEV_DIR=${MSDEV_DIR}" />
sets it to the "there is a problem" type message if no SDK or DEV was provided -->
<property name="MSSDKDIR" value="${MSDEVDIR}"/>
<echo message="executing with MSDEVDIR=${MSDEVDIR}" />
<echo message="executing with MSSDKDIR=${MSSDKDIR}"/>
<!-- ====================================================================== <!-- ======================================================================
@@ -73,37 +60,39 @@
<property name="src.java.unittest" value="${basedir}/unittest" /> <property name="src.java.unittest" value="${basedir}/unittest" />
<property name="src.cpp" value="${basedir}/jni" /> <property name="src.cpp" value="${basedir}/jni" />
<property name="release.dir" value="${basedir}/release" /> <property name="release.dir" value="${basedir}\release" />
<property name="release.dir.x86" value="${release.dir}/x86" /> <property name="release.dir.x86" value="${release.dir}\x86" />
<property name="release.dir.x86.cpp" value="${release.dir.x86}/jni" /> <property name="release.dir.x86.cpp" value="${release.dir.x86}\jni" />
<property name="release.file.x86.dll" value="${release.dir.x86}/${generated.filename.dll}" /> <property name="release.file.x86.dll" value="${release.dir.x86}\${generated.filename.dll}" />
<property name="release.dir.AMD64" value="${release.dir}/AMD64" /> <property name="release.dir.AMD64" value="${release.dir}\AMD64" />
<property name="release.dir.AMD64.cpp" value="${release.dir.AMD64}/jni" /> <property name="release.dir.AMD64.cpp" value="${release.dir.AMD64}\jni" />
<property name="release.file.AMD64.dll" value="${release.dir.AMD64}/${generated.filename.dll}" /> <property name="release.file.AMD64.dll" value="${release.dir.AMD64}\${generated.filename.dll}" />
<property name="release.dir.java" value="${release.dir}/java" /> <property name="release.dir.java" value="${release.dir}\java" />
<property name="release.file.jar" value="${release.dir.java}/${generated.filename.jar}" /> <property name="release.file.jar" value="${release.dir.java}\${generated.filename.jar}" />
<property name="compiler.x86" value="${MSDEVDIR}\bin\cl.exe" /> <property name="compiler.x86" value="${MSDEV_DIR}\bin\cl.exe" />
<property name="linker.x86" value="${MSDEVDIR}\bin\link.exe" /> <property name="linker.x86" value="${MSDEV_DIR}\bin\link.exe" />
<property name="include.x86" value="${MSDEVDIR}\include" /> <property name="manifestool.x86" value="${MSDEV_DIR}\bin\mt.exe" />
<property name="include.x86.atl" value="${MSDEVDIR}\atl\include" /> <property name="include.x86" value="${MSDEV_DIR}\include" />
<property name="library.x86" value="${MSDEVDIR}\lib" /> <property name="include.x86.platformSDK" value="${MSDEV_DIR}\PlatformSDK\Include" />
<property name="include.x86.atl" value="${MSDEV_DIR}\atlmfc\include" />
<property name="library.x86" value="${MSDEV_DIR}\lib" />
<property name="library.x86.platformSDK" value="${MSDEV_DIR}\PlatformSDK\lib" />
<property name="library.x86.atl" value="${MSDEV_DIR}\atlmfc\lib" />
<!-- You have to love the beautiful asymetry of the MS world --> <!-- You have to love the beautiful asymetry of the MS world -->
<!-- The platform SDK comes with 64 bit tools but not 32 bit tools --> <!-- The platform SDK comes with 64 bit tools but not 32 bit tools -->
<property name="compiler.AMD64" value="${MSSDKDIR}\bin\win64\x86\AMD64\cl.exe" /> <property name="compiler.AMD64" value="${MSDEV_DIR}\bin\x86_amd64\cl.exe" />
<property name="linker.AMD64" value="${MSSDKDIR}\bin\win64\x86\AMD64\link.exe" /> <property name="linker.AMD64" value="${MSDEV_DIR}\bin\x86_amd64\link.exe" />
<property name="include.AMD64" value="${MSSDKDIR}\include" /> <property name="manifesttool.AMD64" value="${MSDEV_DIR}\bin\x86_amd64\mt.exe" />
<property name="library.AMD64" value="${MSSDKDIR}\lib\AMD64" /> <property name="include.AMD64" value="${MSDEV_DIR}\include" />
<property name="library.AMD64" value="${MSDEV_DIR}\lib\AMD64" />
<property name="library.AMD64.platformSDK" value="${MSDEV_DIR}\PlatformSDK\lib\AMD64" />
<property name="library.AMD64.atl" value="${MSDEV_DIR}\atlmfc\lib\AMD64" />
<!-- Itanium support not yet implemented -->
<property name="compiler.IA64" value="${MSDEVDIR}\bin\win64\cl.exe" />
<property name="linker.IA64" value="${MSDEVDIR}\bin\win64\link.exe" />
<property name="include.IA64" value="${MSSDKDIR}\include" />
<property name="library.IA64" value="${MSSDKDIR}\lib\IA64" />
<!-- ====================================================================== <!-- ======================================================================
Create the necessary directory structure (does nothing if it Create the necessary directory structure (does nothing if it
@@ -128,19 +117,12 @@
<!-- ====================================================================== <!-- ======================================================================
32 bit x86 can only be built on 32 bit because of a JDK library issue. 32 bit x86 can only be built on 32 bit because of a JDK library issue.
arch=x86 true if on 32 bit, unset in all other cases. arch=x86 true if on 32 bit, unset in all other cases.
Assume 64 bit builds are ok if MSDEVDIR and MSSDKDIR are different This module used to rely on that. Now it just checks to see if we have
because they are always that way on 64 bit and are that the right compilers.
way on 32 bit if using VC++ 6 with platform libraries
================================================================== --> ================================================================== -->
<condition property="canBuildX86"> <available file="${compiler.x86}" property="canBuildX86"/>
<os arch="x86"/>
</condition>
<echo message="canBuildX86=${canBuildX86}" /> <echo message="canBuildX86=${canBuildX86}" />
<condition property="canBuildAMD64"> <available file="${compiler.AMD64}" property="canBuildAMD64"/>
<not>
<equals arg1="${MSSDKDIR}" arg2="${MSDEVDIR}"/>
</not>
</condition>
<echo message="canBuildAMD64=${canBuildAMD64}" /> <echo message="canBuildAMD64=${canBuildAMD64}" />
<!-- ====================================================================== <!-- ======================================================================
@@ -153,14 +135,14 @@
<!-- Check the build file itself as well --> <!-- Check the build file itself as well -->
<srcfiles dir="${basedir}" includes="build.xml" /> <srcfiles dir="${basedir}" includes="build.xml" />
</uptodate> </uptodate>
<echo message="checkDllUpToDateX86= ${dllUpToDateX86}" /> <echo message="dllUpToDateX86= ${dllUpToDateX86} (${release.file.x86.dll})" />
<uptodate property="dllUpToDateAMD64" targetfile="${release.file.AMD64.dll}"> <uptodate property="dllUpToDateAMD64" targetfile="${release.file.AMD64.dll}">
<srcfiles dir="${src.cpp}" includes="*.cpp" /> <srcfiles dir="${src.cpp}" includes="*.cpp" />
<srcfiles dir="${src.cpp}" includes="*.h" /> <srcfiles dir="${src.cpp}" includes="*.h" />
<!-- Check the build file itself as well --> <!-- Check the build file itself as well -->
<srcfiles dir="${basedir}" includes="build.xml" /> <srcfiles dir="${basedir}" includes="build.xml" />
</uptodate> </uptodate>
<echo message="checkDllUpToDateAMD64= ${dllUpToDateAMD64}" /> <echo message="dllUpToDateAMD64= ${dllUpToDateAMD64} (${release.file.AMD64.dll})" />
<!-- ====================================================================== <!-- ======================================================================
We should build if we can build and the dll is not up to date We should build if we can build and the dll is not up to date
@@ -270,84 +252,64 @@
<echo>Clean up the (x86) target folders and file, for safety</echo> <echo>Clean up the (x86) target folders and file, for safety</echo>
<delete file="${release.dir.x86.cpp}/**/*.*" /> <delete file="${release.dir.x86.cpp}/**/*.*" />
<echo>Compiling (x86) C++ classes with JDK JNI library ${JDK}</echo> <echo>Compiling (x86) C++ classes with JDK JNI library ${JDK}</echo>
<apply executable="${compiler.x86}" dir="${release.dir.x86.cpp}" parallel="false" verbose="true" failonerror="true"> <exec executable="${compiler.x86}" dir="${release.dir.x86.cpp}" failonerror="true">
<arg value="-c" /> <env key="Path" value="${MSDEV_IDE_DIR}"/>
<arg value="/nologo" /> <env key="include" value="${JDK}\include;${JDK}\include\win32;${include.x86.platformSDK};${include.x86};${include.x86.atl}"/>
<!-- create a multi threaded library --> <arg value="/nologo"/>
<!-- <arg value="/MT" /> --> <arg value="/c"/>
<arg value="/D WIN32"/>
<arg value="/D NDEBUG"/>
<arg value="/D _WINDOWS"/>
<arg value="/D _USRDLL"/>
<arg value="/D _WINDLL" />
<!-- create a multi threaded dll -->
<arg value="/MD"/>
<!-- raise the warning level from the default --> <!-- raise the warning level from the default -->
<!-- <arg value="/Wp64"/> -->
<arg value="/W2" /> <arg value="/W2" />
<!-- sets the exception model --> <!-- sets the exception model -->
<arg value="/EHsc" /> <arg value="/EHsc" />
<!-- /O2 and /RCT1 are incompatible -->
<!-- optimize build for speed. (is this VC specific? --> <!-- optimize build for speed. (is this VC specific? -->
<arg value="/O2" /> <arg value="/O2" />
<!-- next two wipe out a lot of deprecated warnings about strings when using VC++ 8.0 and SDK--> <!-- next two wipe out a lot of deprecated warnings about strings when using VC++ 8.0 and SDK-->
<arg value="/D" /> <arg value="/D _CRT_SECURE_NO_DEPRECATE" />
<arg value="_CRT_SECURE_NO_DEPRECATE" /> <arg value="/D _CRT_NONSTDC_NO_DEPRECATE" />
<arg value="/D" /> <arg value="/D _STATIC_CPPLIB" />
<arg value="_CRT_NONSTDC_NO_DEPRECATE" /> <arg value="${src.cpp}/*.cpp"/>
<arg value="/D" /> </exec>
<arg value="_STATIC_CPPLIB" />
<arg value="-I" />
<arg value="${JDK}\include" />
<arg value="-I" />
<arg value="${JDK}\include\win32" />
<!-- hopefully 6.0 won't barf including same dir twice -->
<arg value="-I" />
<arg value="${include.x86}" />
<arg value="-I" />
<arg value="${include.x86.atl}" />
<!-- after SDK because SDK may be more up to date -->
<arg value="-I" />
<arg value="${MSDEVDIR}\Include" />
<fileset dir="${src.cpp}">
<include name="*.cpp" />
</fileset>
</apply>
</target> </target>
<target name="compileAMD64" if="shouldBuildAMD64"> <target name="compileAMD64" if="shouldBuildAMD64">
<echo>Clean up the (AMD64) target folders and file, for safety</echo> <echo>Clean up the (AMD64) target folders and file, for safety</echo>
<delete file="${release.dir.AMD64.cpp}/**/*.*" /> <delete file="${release.dir.AMD64.cpp}/**/*.*" />
<echo>Compiling C++ (AMD64) classes with JDK JNI library ${JDK}</echo> <echo>Compiling C++ (AMD64) classes with JDK JNI library ${JDK}</echo>
<apply executable="${compiler.AMD64}" dir="${release.dir.AMD64.cpp}" parallel="false" verbose="true" failonerror="true"> <exec executable="${compiler.AMD64}" dir="${release.dir.AMD64.cpp}" failonerror="true">
<arg value="-c" /> <env key="include" value="${JDK}\include;${JDK}\include\win32;${include.x86.platformSDK};${include.x86};${include.x86.atl}"/>
<arg value="/nologo" /> <env key="Path" value="${MSDEV_IDE_DIR}"/>
<!-- create a multi threaded library --> <arg value="/nologo"/>
<!-- <arg value="/MT" /> --> <arg value="/c"/>
<arg value="/D WIN64"/>
<arg value="/D NDEBUG"/>
<arg value="/D _WINDOWS"/>
<arg value="/D _USRDLL"/>
<arg value="/D _WINDLL" />
<!-- create a multi threaded dll -->
<arg value="/MD"/>
<!-- raise the warning level from the default --> <!-- raise the warning level from the default -->
<arg value="/W3" /> <!-- <arg value="/Wp64"/> -->
<arg value="/W2" />
<!-- sets the exception model --> <!-- sets the exception model -->
<arg value="/EHsc" /> <arg value="/EHsc" />
<!-- /O2 and /RCT1 are incompatible -->
<!-- optimize build for speed. (is this VC specific? --> <!-- optimize build for speed. (is this VC specific? -->
<arg value="/O2" /> <arg value="/O2" />
<!-- next two wipe out a lot of deprecated warnings about strings when using VC++ 8.0 and SDK--> <!-- next two wipe out a lot of deprecated warnings about strings when using VC++ 8.0 and SDK-->
<arg value="/D" /> <arg value="/D _CRT_SECURE_NO_DEPRECATE" />
<arg value="_CRT_SECURE_NO_DEPRECATE" /> <arg value="/D _CRT_NONSTDC_NO_DEPRECATE" />
<arg value="/D" /> <arg value="/D _STATIC_CPPLIB" />
<arg value="_CRT_NONSTDC_NO_DEPRECATE" /> <arg value="${src.cpp}/*.cpp"/>
<arg value="/D" /> </exec>
<arg value="_STATIC_CPPLIB" />
<arg value="-I" />
<arg value="${JDK}\include" />
<arg value="-I" />
<arg value="${JDK}\include\win32" />
<!-- hopefully 6.0 won't barf including same dir twice -->
<arg value="-I" />
<arg value="${include.AMD64}" />
<arg value="-I" />
<arg value="${include.AMD64}\crt" />
<arg value="-I" />
<arg value="${include.AMD64}\atl" />
<!-- after SDK because SDK may be more up to date -->
<!--
<arg value="-I" />
<arg value="${MSDEVDIR}\Include" />
-->
<fileset dir="${src.cpp}">
<include name="*.cpp" />
</fileset>
</apply>
</target> </target>
<!-- ====================================================================== <!-- ======================================================================
Link the obj files into a DLL. Link the obj files into a DLL.
@@ -360,40 +322,55 @@
================================================================== --> ================================================================== -->
<target name="makeDllX86" depends="compileX86" if="shouldBuildX86"> <target name="makeDllX86" depends="compileX86" if="shouldBuildX86">
<echo>Clean up the target folders and file, for safety</echo> <echo>Clean up the target folders and file, for safety</echo>
<echo>Using ${library.x86}</echo>
<delete file="${release.file.x86.dll}" /> <delete file="${release.file.x86.dll}" />
<echo>Creating ${release.file.x86.dll}</echo> <echo>Creating ${release.file.x86.dll}</echo>
<apply executable="${linker.x86}" dir="${release.dir.x86.cpp}" parallel="true" verbose="true" failonerror="true"> <exec executable="${linker.x86}" dir="${release.dir.x86.cpp}" failonerror="true">
<env key="Path" value="${MSDEV_IDE_DIR}"/>
<arg value="/nologo" /> <arg value="/nologo" />
<arg value="/MANIFEST" />
<arg value="/MANIFESTFILE:${release.dir.x86.cpp}/jacob.dll.manifest" />
<arg value="/dll" /> <arg value="/dll" />
<arg value="/version:${version}" /> <arg value="/version:${version}" />
<arg value="/out:${release.file.x86.dll}" /> <arg value="/out:${release.file.x86.dll}" />
<arg value="/libpath:${library.x86}" /> <arg value="/libpath:${library.x86}" />
<srcfile /> <arg value="/libpath:${library.x86.platformSDK}" />
<arg value="/libpath:${library.x86.atl}" />
<arg value="${JDK}\lib\jvm.lib" /> <arg value="${JDK}\lib\jvm.lib" />
<fileset dir="${release.dir.x86.cpp}"> <arg value="${release.dir.x86.cpp}/*obj"/>
<include name="*.obj" /> </exec>
</fileset> <exec executable="${manifestool.x86}" dir="${release.dir.x86.cpp}" failonerror="true">
</apply> <env key="Path" value="${MSDEV_IDE_DIR}"/>
<arg value="-outputresource:${release.file.x86.dll};2"/>
<arg value="-manifest"/>
<arg value="${release.dir.x86.cpp}\jacob.dll.manifest" />
</exec>
</target> </target>
<target name="makeDllAMD64" depends="compileAMD64" if="shouldBuildAMD64"> <target name="makeDllAMD64" depends="compileAMD64" if="shouldBuildAMD64">
<echo>Clean up the target folders and file, for safety</echo> <echo>Clean up the target folders and file, for safety</echo>
<delete file="${release.file.AMD64.dll}" /> <delete file="${release.file.AMD64.dll}" />
<echo>Creating {$release.file.AMD64.dll}</echo> <echo>Creating {$release.file.AMD64.dll}</echo>
<apply executable="${linker.AMD64}" dir="${release.dir.AMD64.cpp}" parallel="true" verbose="true" failonerror="true"> <exec executable="${linker.AMD64}" dir="${release.dir.AMD64.cpp}" failonerror="true">
<env key="Path" value="${MSDEV_IDE_DIR}"/>
<arg value="/nologo" /> <arg value="/nologo" />
<arg value="/MANIFEST" />
<arg value="/MANIFESTFILE:${release.dir.AMD64.cpp}/jacob.dll.manifest" />
<arg value="/dll" /> <arg value="/dll" />
<arg value="/version:${version}" /> <arg value="/version:${version}" />
<arg value="/out:${release.file.AMD64.dll}" /> <arg value="/out:${release.file.AMD64.dll}" />
<arg value="/libpath:${library.AMD64}" /> <arg value="/libpath:${library.AMD64}" />
<arg value="/libpath:${library.AMD64}\atlmfc" /> <arg value="/libpath:${library.AMD64.platformSDK}" />
<srcfile /> <arg value="/libpath:${library.AMD64.atl}" />
<arg value="${JDK}\lib\jvm.lib" /> <arg value="${JDK}\lib\jvm.lib" />
<arg value="bufferoverflowu.lib" /> <arg value="${release.dir.AMD64.cpp}/*.obj" />
<fileset dir="${release.dir.AMD64.cpp}"> </exec>
<include name="*.obj" /> <exec executable="${manifestool.x86}" dir="${release.dir.AMD64.cpp}" failonerror="true">
</fileset> <env key="Path" value="${MSDEV_IDE_DIR}"/>
</apply> <arg value="-outputresource:${release.file.AMD64.dll};2"/>
<arg value="-manifest"/>
<arg value="${release.dir.AMD64.cpp}\jacob.dll.manifest" />
</exec>
</target> </target>
<!-- ====================================================================== <!-- ======================================================================
@@ -453,7 +430,7 @@
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="jni/**" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="jni/**" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="samples/**" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="samples/**" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="unittest/**" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="unittest/**" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="vstudio/**" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="vstudio/jacob.vcproj" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="lib/**" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="lib/**" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="build.xml, README.txt" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="build.xml, README.txt" />
<zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="LICENSE.* version.properties" /> <zipfileset dir="${basedir}" prefix="${generated.filename.zip}" includes="LICENSE.* version.properties" />

View File

@@ -25,39 +25,28 @@ The Servlet examples that required j2ee libraries to compile have temporarily
been removed. been removed.
<p> <p>
<H1>Development Environment</h1> <H1>Development Environment</h1>
The simplest build environment involves MS Visual C++ 6.0, Eclipse 3.2 and JDK 1.4. The simplest build environment includes MS Visual C++ 8.0 (Studio 2005),
Eclipse 3.2 with the C/C++ module and JDK 1.4.
In that situation, you would just create the <i>compilation_tools.properties</i> In that situation, you would just create the <i>compilation_tools.properties</i>
using the example build.xml as a template. All of the releases, up through 1.12, using the example build.xml as a template. All of the releases, up through 1.12,
were built using Visual C++ 6.0. were built using Visual C++ 6.0. 64 bit builds are supported starting with release 1.11.
Microsoft Visual C++ 8.0 supports 64 bit builds. so no additional tools are required.
<UL> <UL>
<li> Microsoft Visual C++ 6.0 and it's included library. (to D:\apps in my case) <li> Microsoft Visual C++ 8.0 and it's included library. (to D:\apps in my case)
<li> Eclipse 3.1 or later from www.eclipse.org. <li> Eclipse 3.2 or later from www.eclipse.org. I use the C/C++ plugin for
<li> Java JDK 1.4 (this was built using 1.4.2.13) eclipse rather than MS Visual Studio
<li> Java JDK 1.4 (1.12 was built using 1.4.2.13) Compilation using JDK 1.5 has not been tested
</ul> </ul>
<p> <p>
64 bit builds are supported with release 1.11. Tools required for 64 bit builds <p>
include:
<UL>
<li> Microsoft Visual C++ 6.0 and it's included library. (installed in D:\apps in my case)
<li> Microsoft SDK 2005R2 with the following components (installed in D:\apps in my case)
<ul>
<li>Windows Core SDK
<li>Microsoft Web Workshop (IE) SDK is required because it is referenced in atlbase.h
<li>(optional) Some folks also install the Debugging tools.
</ul>
<li> Eclipse 3.1 or later from www.eclipse.org.
<li> Java JDK 1.4 (this was built using 1.4.2.13)
</ul>
Compilation using JDK 1.5 has not been tested
<H1>Build Process</H1> <H1>Build Process</H1>
The build process is based on ANT. It cannot be built using MAKE. The build process is based on ANT.
You can run ANT from inside of eclipse or from the command line. You can run ANT from inside of eclipse or from the command line.
The ant process is driven off of a configuration file named The ant process is driven off of a configuration file named
<i>compilation_tools.properties</i> that describes the locations of the JDK and Microsoft <code>compilation_tools.properties</code> that describes the locations of the JDK and Microsoft
C++ tools. The build.xml file in the root directory contains examples of the contents C++ tools. The <code>build.xml</code> file in the root directory contains examples of the contents
of this file. of this file.
<p> <p>
@@ -107,7 +96,7 @@ path variable must be set to include the directory the jacob.dll is in. The
simplest way to do that is to add it as a command line option. simplest way to do that is to add it as a command line option.
Last Modified 10/2005 Last Modified 4/2007
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,5 +1,52 @@
<HTML> <HTML>
<BODY> <BODY>
<!-- --------- -->
<h2>JACOB 1.13</h2>
<h3>What's New</h3>
<ul>
<li>
<b>Now compiles with with Visual Studio 2005</b>
</li>
</ul>
<h3>Tracked Changes</h3>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" >
<tr>
<td width="100%" colspan="2"><b>Bugs</b></td>
</tr>
<tr>
<td width="13%" valign="top">&nbsp;</td>
<td width="87%" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="100%" colspan="2"><b>Patches</b></td>
</tr>
<tr>
<td width="13%" valign="top">1709841 </td>
<td width="87%" valign="top">(pre-release 1) Compiles with Visual Studio 2005</td>
</tr>
<tr>
<tr>
<td width="13%" valign="top">&nbsp;</td>
<td width="87%" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="100%" colspan="2"><b>Feature Requests</b></td>
</tr>
<tr>
<td width="13%" valign="top">&nbsp;</td>
<td width="87%" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="100%" colspan="2"><b>Known Issues</b></td>
</tr>
<tr>
<td width="13%" valign="top"></td>
<td width="87%" valign="top"><em></em></td>
</tr>
</table>
<!-- --------- --> <!-- --------- -->
<h2>JACOB 1.12</h2> <h2>JACOB 1.12</h2>
<h3>What's New</h3> <h3>What's New</h3>

View File

@@ -291,13 +291,13 @@ JNIEXPORT jintArray JNICALL Java_com_jacob_com_Dispatch_getIDsOfNames
CoTaskMemFree(lps); CoTaskMemFree(lps);
CoTaskMemFree(dispid); CoTaskMemFree(dispid);
char buf[1024]; char buf[1024];
strcpy(buf, "Can't map names to dispid:"); strcpy_s(buf, "Can't map names to dispid:");
for(i=0;i<l;i++) for(i=0;i<l;i++)
{ {
USES_CONVERSION; USES_CONVERSION;
jstring s = (jstring)env->GetObjectArrayElement(names, i); jstring s = (jstring)env->GetObjectArrayElement(names, i);
const char *nm = env->GetStringUTFChars(s, NULL); const char *nm = env->GetStringUTFChars(s, NULL);
strcat(buf, nm); strcat_s(buf, nm);
env->ReleaseStringUTFChars(s, nm); env->ReleaseStringUTFChars(s, nm);
env->DeleteLocalRef(s); env->DeleteLocalRef(s);
} }
@@ -359,13 +359,13 @@ static char* CreateErrorMsgFromInfo(HRESULT inResult, EXCEPINFO* ioInfo,
char* desc = ::BasicToCharString(ioInfo->bstrDescription); char* desc = ::BasicToCharString(ioInfo->bstrDescription);
const size_t MSG_LEN = ::strlen(methName) + ::strlen(source) + ::strlen(desc) + 128; const size_t MSG_LEN = ::strlen(methName) + ::strlen(source) + ::strlen(desc) + 128;
msg = new char[MSG_LEN]; msg = new char[MSG_LEN];
::strncpy(msg, "Invoke of: ", MSG_LEN); ::strncpy_s(msg, MSG_LEN, "Invoke of: ", strlen("Invoke of: "));
::strncat(msg, methName, MSG_LEN); ::strncat_s(msg, MSG_LEN, methName, strlen(methName));
::strncat(msg, "\nSource: ", MSG_LEN); ::strncat_s(msg, MSG_LEN, "\nSource: ", strlen("\nSource: "));
::strncat(msg, source, MSG_LEN); ::strncat_s(msg, MSG_LEN, source, strlen(source));
::strncat(msg, "\nDescription: ", MSG_LEN); ::strncat_s(msg, MSG_LEN, "\nDescription: ", strlen("\nDescription: "));
::strncat(msg, desc, MSG_LEN); ::strncat_s(msg, MSG_LEN, desc, strlen(desc));
::strncat(msg, "\n", MSG_LEN); ::strncat_s(msg, MSG_LEN, "\n", strlen("\n"));
delete source; delete source;
delete desc; delete desc;
} }
@@ -374,11 +374,12 @@ static char* CreateErrorMsgFromInfo(HRESULT inResult, EXCEPINFO* ioInfo,
char* msg2 = CreateErrorMsgFromResult(inResult); char* msg2 = CreateErrorMsgFromResult(inResult);
const size_t MSG_LEN = ::strlen(methName) + ::strlen(msg2) + 128; const size_t MSG_LEN = ::strlen(methName) + ::strlen(msg2) + 128;
msg = new char[MSG_LEN]; msg = new char[MSG_LEN];
::strncpy(msg, "A COM exception has been encountered:\n" ::strncpy_s(msg, MSG_LEN,
"At Invoke of: ", MSG_LEN); "A COM exception has been encountered:\nAt Invoke of: ",
::strncat(msg, methName, MSG_LEN); strlen("A COM exception has been encountered:\nAt Invoke of: "));
::strncat(msg, "\nDescription: ", MSG_LEN); ::strncat_s(msg, MSG_LEN, methName, strlen(methName));
::strncat(msg, msg2, MSG_LEN); ::strncat_s(msg, MSG_LEN, "\nDescription: ", strlen("\nDescription: "));
::strncat_s(msg, MSG_LEN, msg2, strlen(msg2));
// jacob-msg 1075 - SF 1053872 : Documentation says "use LocalFree"!! // jacob-msg 1075 - SF 1053872 : Documentation says "use LocalFree"!!
//delete msg2; //delete msg2;
LocalFree(msg2); LocalFree(msg2);
@@ -415,7 +416,7 @@ JNIEXPORT jobject JNICALL Java_com_jacob_com_Dispatch_invokev
HRESULT hr; HRESULT hr;
if (FAILED(hr = name2ID(pIDispatch, nm, (long *)&dispID, lcid))) { if (FAILED(hr = name2ID(pIDispatch, nm, (long *)&dispID, lcid))) {
char buf[1024]; char buf[1024];
sprintf(buf, "Can't map name to dispid: %s", nm); sprintf_s(buf, 1024, "Can't map name to dispid: %s", nm);
ThrowComFail(env, buf, -1); ThrowComFail(env, buf, -1);
return NULL; return NULL;
} }
@@ -514,7 +515,7 @@ JNIEXPORT jobject JNICALL Java_com_jacob_com_Dispatch_invokev
} else { } else {
dispIdAsName = new char[256]; dispIdAsName = new char[256];
// get the id string // get the id string
_itoa (dispID,dispIdAsName,10); _itoa_s (dispID, dispIdAsName, 256,10);
//continue on mostly as before //continue on mostly as before
buf = CreateErrorMsgFromInfo(hr,&excepInfo,dispIdAsName); buf = CreateErrorMsgFromInfo(hr,&excepInfo,dispIdAsName);
} }

View File

@@ -1,31 +0,0 @@
/*
* Copyright (c) 1999-2004 Sourceforge JACOB Project.
* All rights reserved. Originator: Dan Adler (http://danadler.com).
* Get more information about JACOB at http://sourceforge.net/projects/jacob-project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
// stdafx.cpp : source file that includes just the standard includes
// stdafx.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif
#include <atlimpl.cpp>

View File

@@ -42,7 +42,7 @@
//You may derive a class from CComModule and use it if you want to override //You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module //something, but do not change the name of _Module
extern CComModule _Module; extern CComModule _Module;
#include <atlcom.h> //#include <atlcom.h>
//{{AFX_INSERT_LOCATION}} //{{AFX_INSERT_LOCATION}}

View File

@@ -1,182 +0,0 @@
# Microsoft Developer Studio Project File - Name="jacob" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=jacob - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "jacob.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "jacob.mak" CFG="jacob - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "jacob - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "jacob - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "jacob - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACOB_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACOB_EXPORTS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
!ELSEIF "$(CFG)" == "jacob - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACOB_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACOB_EXPORTS" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "jacob - Win32 Release"
# Name "jacob - Win32 Debug"
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# Begin Source File
SOURCE=..\..\jni\ComThread.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\ComThread.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\Dispatch.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\Dispatch.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\DispatchEvents.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\DispatchEvents.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\DispatchProxy.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\DispatchProxy.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\EnumVariant.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\EnumVariant.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\EventProxy.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\EventProxy.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\SafeArray.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\SafeArray.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\STA.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\STA.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\StdAfx.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\StdAfx.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\util.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\util.h
# End Source File
# Begin Source File
SOURCE=..\..\jni\Variant.cpp
# End Source File
# Begin Source File
SOURCE=..\..\jni\Variant.h
# End Source File
# End Target
# End Project

View File

@@ -1,29 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "jacob"=.\jacob.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

Binary file not shown.

Binary file not shown.

View File

@@ -1,72 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: jacob - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\DANADL~1\LOCALS~1\Temp\RSP2A.tmp" with contents
[
/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACOB_EXPORTS" /Fp"Debug/jacob.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\ComThread.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\Dispatch.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\DispatchEvents.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\DispatchProxy.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\EnumVariant.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\EventProxy.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\SafeArray.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\STA.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\StdAfx.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\util.cpp"
"C:\Documents and Settings\Dan Adler\My Documents\sourceforge\jacob\jni\Variant.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\DANADL~1\LOCALS~1\Temp\RSP2A.tmp"
Creating temporary file "C:\DOCUME~1\DANADL~1\LOCALS~1\Temp\RSP2B.tmp" with contents
[
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/jacob.pdb" /debug /machine:I386 /out:"Debug/jacob.dll" /implib:"Debug/jacob.lib" /pdbtype:sept
".\Debug\ComThread.obj"
".\Debug\Dispatch.obj"
".\Debug\DispatchEvents.obj"
".\Debug\DispatchProxy.obj"
".\Debug\EnumVariant.obj"
".\Debug\EventProxy.obj"
".\Debug\SafeArray.obj"
".\Debug\STA.obj"
".\Debug\StdAfx.obj"
".\Debug\util.obj"
".\Debug\Variant.obj"
]
Creating command line "link.exe @C:\DOCUME~1\DANADL~1\LOCALS~1\Temp\RSP2B.tmp"
<h3>Output Window</h3>
Compiling...
ComThread.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\comthread.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
Dispatch.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\dispatch.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
DispatchEvents.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\dispatchevents.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
DispatchProxy.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\comthread.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
EnumVariant.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\dispatch.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
EventProxy.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\eventproxy.h(37) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
SafeArray.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\safearray.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
STA.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\comthread.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
StdAfx.cpp
util.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\dispatch.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
Variant.cpp
c:\documents and settings\dan adler\my documents\sourceforge\jacob\jni\variant.h(2) : fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
Error executing cl.exe.
<h3>Results</h3>
jacob.dll - 10 error(s), 0 warning(s)
</pre>
</body>
</html>

283
vstudio/jacob/jacob.vcproj Normal file
View File

@@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="jacob"
ProjectGUID="{EF917099-2E3A-41BA-A257-511EAAC6FCA9}"
RootNamespace="jacob"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\..\release\x86\jni"
IntermediateDirectory="..\..\release\x86\jni"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="D:\j2sdk1.4.2_14\include\win32;D:\j2sdk1.4.2_14\include"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;JACOB_EXPORTS;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
Version=""
LinkIncremental="2"
GenerateManifest="true"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\..\release\x86\jni"
IntermediateDirectory="..\..\release\x86\jni"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="D:\j2sdk1.4.2_14\include\win32;D:\j2sdk1.4.2_14\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;JACOB_EXPORTS;"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateManifest="true"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\jni\ComThread.h"
>
</File>
<File
RelativePath="..\..\jni\Dispatch.h"
>
</File>
<File
RelativePath="..\..\jni\DispatchEvents.h"
>
</File>
<File
RelativePath="..\..\jni\DispatchProxy.h"
>
</File>
<File
RelativePath="..\..\jni\EnumVariant.h"
>
</File>
<File
RelativePath="..\..\jni\EventProxy.h"
>
</File>
<File
RelativePath="..\..\jni\SafeArray.h"
>
</File>
<File
RelativePath="..\..\jni\STA.h"
>
</File>
<File
RelativePath="..\..\jni\StdAfx.h"
>
</File>
<File
RelativePath="..\..\jni\util.h"
>
</File>
<File
RelativePath="..\..\jni\Variant.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\jni\ComThread.cpp"
>
</File>
<File
RelativePath="..\..\jni\Dispatch.cpp"
>
</File>
<File
RelativePath="..\..\jni\DispatchEvents.cpp"
>
</File>
<File
RelativePath="..\..\jni\DispatchProxy.cpp"
>
</File>
<File
RelativePath="..\..\jni\EnumVariant.cpp"
>
</File>
<File
RelativePath="..\..\jni\EventProxy.cpp"
>
</File>
<File
RelativePath="..\..\jni\SafeArray.cpp"
>
</File>
<File
RelativePath="..\..\jni\STA.cpp"
>
</File>
<File
RelativePath="..\..\jni\StdAfx.cpp"
>
</File>
<File
RelativePath="..\..\jni\util.cpp"
>
</File>
<File
RelativePath="..\..\jni\Variant.cpp"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>