aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcom/COMTest1.apsbin0 -> 3720 bytes
-rwxr-xr-xcom/COMTest1.cpp72
-rwxr-xr-xcom/COMTest1.def9
-rwxr-xr-xcom/COMTest1.dsp350
-rwxr-xr-xcom/COMTest1.dsw29
-rwxr-xr-xcom/COMTest1.idl44
-rwxr-xr-xcom/COMTest1.ncbbin0 -> 66559 bytes
-rwxr-xr-xcom/COMTest1.optbin0 -> 51711 bytes
-rwxr-xr-xcom/COMTest1.plg89
-rwxr-xr-xcom/COMTest1.rc128
-rwxr-xr-xcom/COMTest1_p.c571
-rwxr-xr-xcom/COMTest1ps.def11
-rwxr-xr-xcom/COMTest1ps.mk16
-rwxr-xr-xcom/ProjDef.cpp115
-rwxr-xr-xcom/ProjDef.h49
-rwxr-xr-xcom/ProjDef.rgs26
-rwxr-xr-xcom/StdAfx.cpp12
-rwxr-xr-xcom/StdAfx.h27
-rwxr-xr-xcom/VB6Test.frm50
-rwxr-xr-xcom/dlldata.c38
-rwxr-xr-xcom/resource.h17
21 files changed, 1653 insertions, 0 deletions
diff --git a/com/COMTest1.aps b/com/COMTest1.aps
new file mode 100755
index 00000000..e93148fa
--- /dev/null
+++ b/com/COMTest1.aps
Binary files differ
diff --git a/com/COMTest1.cpp b/com/COMTest1.cpp
new file mode 100755
index 00000000..4939b8b4
--- /dev/null
+++ b/com/COMTest1.cpp
@@ -0,0 +1,72 @@
+// COMTest1.cpp : Implementation of DLL Exports.
+
+
+// Note: Proxy/Stub Information
+// To build a separate proxy/stub DLL,
+// run nmake -f COMTest1ps.mk in the project directory.
+
+#include "stdafx.h"
+#include "resource.h"
+#include <initguid.h>
+#include "COMTest1.h"
+
+#include "COMTest1_i.c"
+#include "ProjDef.h"
+
+
+CComModule _Module;
+
+BEGIN_OBJECT_MAP(ObjectMap)
+OBJECT_ENTRY(CLSID_ProjDef, CProjDef)
+END_OBJECT_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// DLL Entry Point
+
+extern "C"
+BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
+{
+ if (dwReason == DLL_PROCESS_ATTACH)
+ {
+ _Module.Init(ObjectMap, hInstance, &LIBID_PROJ4Lib);
+ DisableThreadLibraryCalls(hInstance);
+ }
+ else if (dwReason == DLL_PROCESS_DETACH)
+ _Module.Term();
+ return TRUE; // ok
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Used to determine whether the DLL can be unloaded by OLE
+
+STDAPI DllCanUnloadNow(void)
+{
+ return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Returns a class factory to create an object of the requested type
+
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+ return _Module.GetClassObject(rclsid, riid, ppv);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// DllRegisterServer - Adds entries to the system registry
+
+STDAPI DllRegisterServer(void)
+{
+ // registers object, typelib and all interfaces in typelib
+ return _Module.RegisterServer(TRUE);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// DllUnregisterServer - Removes entries from the system registry
+
+STDAPI DllUnregisterServer(void)
+{
+ return _Module.UnregisterServer(TRUE);
+}
+
+
diff --git a/com/COMTest1.def b/com/COMTest1.def
new file mode 100755
index 00000000..a14e3f8b
--- /dev/null
+++ b/com/COMTest1.def
@@ -0,0 +1,9 @@
+; COMTest1.def : Declares the module parameters.
+
+LIBRARY "PROJ4COM.DLL"
+
+EXPORTS
+ DllCanUnloadNow @1 PRIVATE
+ DllGetClassObject @2 PRIVATE
+ DllRegisterServer @3 PRIVATE
+ DllUnregisterServer @4 PRIVATE
diff --git a/com/COMTest1.dsp b/com/COMTest1.dsp
new file mode 100755
index 00000000..5a2115db
--- /dev/null
+++ b/com/COMTest1.dsp
@@ -0,0 +1,350 @@
+# Microsoft Developer Studio Project File - Name="COMTest1" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=COMTest1 - 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 "COMTest1.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 "COMTest1.mak" CFG="COMTest1 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "COMTest1 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "COMTest1 - Win32 Unicode Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "COMTest1 - Win32 Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "COMTest1 - Win32 Release MinDependency" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "COMTest1 - Win32 Unicode Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "COMTest1 - Win32 Unicode Release MinDependency" (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)" == "COMTest1 - 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 /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
+# 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 /subsystem:windows /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 C:\warmerda\proj\src\proj_i.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/PROJ4COM.dll" /pdbtype:sept
+# Begin Custom Build - Performing registration
+OutDir=.\Debug
+TargetPath=.\Debug\PROJ4COM.dll
+InputPath=.\Debug\PROJ4COM.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "DebugU"
+# PROP BASE Intermediate_Dir "DebugU"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "DebugU"
+# PROP Intermediate_Dir "DebugU"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c
+# 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 /subsystem:windows /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 /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# Begin Custom Build - Performing registration
+OutDir=.\DebugU
+TargetPath=.\DebugU\COMTest1.dll
+InputPath=.\DebugU\COMTest1.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ if "%OS%"=="" goto NOTNT
+ if not "%OS%"=="Windows_NT" goto NOTNT
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+ goto end
+ :NOTNT
+ echo Warning : Cannot register Unicode DLL on Windows 95
+ :end
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinSize"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ReleaseMinSize"
+# PROP BASE Intermediate_Dir "ReleaseMinSize"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "ReleaseMinSize"
+# PROP Intermediate_Dir "ReleaseMinSize"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# 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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386
+# Begin Custom Build - Performing registration
+OutDir=.\ReleaseMinSize
+TargetPath=.\ReleaseMinSize\COMTest1.dll
+InputPath=.\ReleaseMinSize\COMTest1.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinDependency"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ReleaseMinDependency"
+# PROP BASE Intermediate_Dir "ReleaseMinDependency"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "ReleaseMinDependency"
+# PROP Intermediate_Dir "ReleaseMinDependency"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# 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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386
+# Begin Custom Build - Performing registration
+OutDir=.\ReleaseMinDependency
+TargetPath=.\ReleaseMinDependency\COMTest1.dll
+InputPath=.\ReleaseMinDependency\COMTest1.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinSize"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ReleaseUMinSize"
+# PROP BASE Intermediate_Dir "ReleaseUMinSize"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "ReleaseUMinSize"
+# PROP Intermediate_Dir "ReleaseUMinSize"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# 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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386
+# Begin Custom Build - Performing registration
+OutDir=.\ReleaseUMinSize
+TargetPath=.\ReleaseUMinSize\COMTest1.dll
+InputPath=.\ReleaseUMinSize\COMTest1.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ if "%OS%"=="" goto NOTNT
+ if not "%OS%"=="Windows_NT" goto NOTNT
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+ goto end
+ :NOTNT
+ echo Warning : Cannot register Unicode DLL on Windows 95
+ :end
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinDependency"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "ReleaseUMinDependency"
+# PROP BASE Intermediate_Dir "ReleaseUMinDependency"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "ReleaseUMinDependency"
+# PROP Intermediate_Dir "ReleaseUMinDependency"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
+# 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 /subsystem:windows /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 /subsystem:windows /dll /machine:I386
+# Begin Custom Build - Performing registration
+OutDir=.\ReleaseUMinDependency
+TargetPath=.\ReleaseUMinDependency\COMTest1.dll
+InputPath=.\ReleaseUMinDependency\COMTest1.dll
+SOURCE="$(InputPath)"
+
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ if "%OS%"=="" goto NOTNT
+ if not "%OS%"=="Windows_NT" goto NOTNT
+ regsvr32 /s /c "$(TargetPath)"
+ echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
+ goto end
+ :NOTNT
+ echo Warning : Cannot register Unicode DLL on Windows 95
+ :end
+
+# End Custom Build
+
+!ENDIF
+
+# Begin Target
+
+# Name "COMTest1 - Win32 Debug"
+# Name "COMTest1 - Win32 Unicode Debug"
+# Name "COMTest1 - Win32 Release MinSize"
+# Name "COMTest1 - Win32 Release MinDependency"
+# Name "COMTest1 - Win32 Unicode Release MinSize"
+# Name "COMTest1 - Win32 Unicode Release MinDependency"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\COMTest1.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\COMTest1.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\COMTest1.idl
+
+!IF "$(CFG)" == "COMTest1 - Win32 Debug"
+
+# ADD MTL /tlb ".\PROJ4COM.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Debug"
+
+# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinSize"
+
+# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinDependency"
+
+# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinSize"
+
+# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinDependency"
+
+# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\COMTest1.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\ProjDef.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ProjDef.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\ProjDef.rgs
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/com/COMTest1.dsw b/com/COMTest1.dsw
new file mode 100755
index 00000000..9a011802
--- /dev/null
+++ b/com/COMTest1.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "COMTest1"=.\COMTest1.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/com/COMTest1.idl b/com/COMTest1.idl
new file mode 100755
index 00000000..ed5bc023
--- /dev/null
+++ b/com/COMTest1.idl
@@ -0,0 +1,44 @@
+// COMTest1.idl : IDL source for COMTest1.dll
+//
+
+// This file will be processed by the MIDL tool to
+// produce the type library (COMTest1.tlb) and marshalling code.
+
+import "oaidl.idl";
+import "ocidl.idl";
+ [
+ object,
+ uuid(28849AA6-E8FB-4077-8D7A-D83CDFC2DC44),
+ dual,
+ helpstring("IProjDef Interface"),
+ pointer_default(unique)
+ ]
+ interface IProjDef : IDispatch
+ {
+ [id(1), helpstring("method Initialize")] HRESULT Initialize([in] BSTR proj_string, [out, retval] int *success );
+ [id(2), helpstring("method TransformPoint3D")] HRESULT TransformPoint3D([in] IUnknown *srcProj,
+ [in,out] double *x, [in, out] double *y, [in, out] double *z, [out, retval] int *success );
+ [id(3), helpstring("method GetHandle")] HRESULT GetHandle([out, retval] long *pHandle );
+ [id(4), helpstring("method IsLatLong")] HRESULT IsLatLong([out, retval] int *result);
+ [id(5), helpstring("method GetLastError")] HRESULT GetLastError([out, retval] BSTR *error );
+ };
+
+[
+ uuid(A0ADE3D8-9A85-4BD3-AD56-BFEF42495130),
+ version(1.0),
+ helpstring("PROJ.4")
+]
+library PROJ4Lib
+{
+ importlib("stdole32.tlb");
+ importlib("stdole2.tlb");
+
+ [
+ uuid(B9B8F0A3-D9F8-4537-9A03-329DC9AE144C),
+ helpstring("ProjDef Class")
+ ]
+ coclass ProjDef
+ {
+ [default] interface IProjDef;
+ };
+};
diff --git a/com/COMTest1.ncb b/com/COMTest1.ncb
new file mode 100755
index 00000000..650e1462
--- /dev/null
+++ b/com/COMTest1.ncb
Binary files differ
diff --git a/com/COMTest1.opt b/com/COMTest1.opt
new file mode 100755
index 00000000..ec93c1e3
--- /dev/null
+++ b/com/COMTest1.opt
Binary files differ
diff --git a/com/COMTest1.plg b/com/COMTest1.plg
new file mode 100755
index 00000000..0b219460
--- /dev/null
+++ b/com/COMTest1.plg
@@ -0,0 +1,89 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: COMTest1 - Win32 Debug--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "midl.exe /tlb ".\PROJ4COM.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf "C:\warmerda\COMTest1\COMTest1.idl""
+Creating command line "rc.exe /l 0x409 /fo"Debug/COMTest1.res" /d "_DEBUG" "C:\warmerda\COMTest1\COMTest1.rc""
+Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C2.tmp" with contents
+[
+/nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"Debug/COMTest1.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
+"C:\warmerda\COMTest1\COMTest1.cpp"
+"C:\warmerda\COMTest1\ProjDef.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C2.tmp"
+Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C3.tmp" with contents
+[
+/nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"Debug/COMTest1.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
+"C:\warmerda\COMTest1\StdAfx.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C3.tmp"
+Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C4.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 C:\warmerda\proj\src\proj_i.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"Debug/PROJ4COM.pdb" /debug /machine:I386 /def:".\COMTest1.def" /out:"Debug/PROJ4COM.dll" /implib:"Debug/PROJ4COM.lib" /pdbtype:sept
+.\Debug\COMTest1.obj
+.\Debug\ProjDef.obj
+.\Debug\StdAfx.obj
+.\Debug\COMTest1.res
+]
+Creating command line "link.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C4.tmp"
+Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C5.bat" with contents
+[
+@echo off
+regsvr32 /s /c ".\Debug\PROJ4COM.dll"
+echo regsvr32 exec. time > ".\Debug\regsvr32.trg"
+]
+Creating command line "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2C5.bat"
+Creating Type Library...
+Microsoft (R) MIDL Compiler Version 5.01.0164
+Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
+Processing C:\warmerda\COMTest1\COMTest1.idl
+COMTest1.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oaidl.idl
+oaidl.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\objidl.idl
+objidl.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\unknwn.idl
+unknwn.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\wtypes.idl
+wtypes.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\basetsd.h
+basetsd.h
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\guiddef.h
+guiddef.h
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\ocidl.idl
+ocidl.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oleidl.idl
+oleidl.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\servprov.idl
+servprov.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\urlmon.idl
+urlmon.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\msxml.idl
+msxml.idl
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oaidl.acf
+oaidl.acf
+Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\ocidl.acf
+ocidl.acf
+Compiling resources...
+Compiling...
+StdAfx.cpp
+Compiling...
+COMTest1.cpp
+ProjDef.cpp
+Generating Code...
+Linking...
+ Creating library Debug/PROJ4COM.lib and object Debug/PROJ4COM.exp
+<h3>Output Window</h3>
+Performing registration
+
+
+
+<h3>Results</h3>
+PROJ4COM.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
diff --git a/com/COMTest1.rc b/com/COMTest1.rc
new file mode 100755
index 00000000..6b16d02a
--- /dev/null
+++ b/com/COMTest1.rc
@@ -0,0 +1,128 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "1 TYPELIB ""COMTest1.tlb""\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "\0"
+ VALUE "CompanyName", "\0"
+ VALUE "FileDescription", "PROJ.4 COM Module\0"
+ VALUE "FileVersion", "1, 0, 0, 1\0"
+ VALUE "InternalName", "PROJ4\0"
+ VALUE "LegalCopyright", "Copyright 2005\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OLESelfRegister", "\0"
+ VALUE "OriginalFilename", "PROJ4COM.DLL\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "PROJ.4 COM\0"
+ VALUE "ProductVersion", "1, 0, 0, 1\0"
+ VALUE "SpecialBuild", "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+#endif // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// REGISTRY
+//
+
+IDR_PROJDEF REGISTRY DISCARDABLE "ProjDef.rgs"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_PROJNAME "PROJ4COM"
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+1 TYPELIB "COMTest1.tlb"
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/com/COMTest1_p.c b/com/COMTest1_p.c
new file mode 100755
index 00000000..787f56ab
--- /dev/null
+++ b/com/COMTest1_p.c
@@ -0,0 +1,571 @@
+/* this ALWAYS GENERATED file contains the proxy stub code */
+
+
+/* File created by MIDL compiler version 5.01.0164 */
+/* at Tue Oct 18 23:10:12 2005
+ */
+/* Compiler settings for C:\warmerda\COMTest1\COMTest1.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: allocation ref bounds_check enum stub_data
+*/
+//@@MIDL_FILE_HEADING( )
+
+#define USE_STUBLESS_PROXY
+
+
+/* verify that the <rpcproxy.h> version is high enough to compile this file*/
+#ifndef __REDQ_RPCPROXY_H_VERSION__
+#define __REQUIRED_RPCPROXY_H_VERSION__ 440
+#endif
+
+
+#include "rpcproxy.h"
+#ifndef __RPCPROXY_H_VERSION__
+#error this stub requires an updated version of <rpcproxy.h>
+#endif // __RPCPROXY_H_VERSION__
+
+
+#include "COMTest1.h"
+
+#define TYPE_FORMAT_STRING_SIZE 81
+#define PROC_FORMAT_STRING_SIZE 171
+
+typedef struct _MIDL_TYPE_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
+ } MIDL_TYPE_FORMAT_STRING;
+
+typedef struct _MIDL_PROC_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
+ } MIDL_PROC_FORMAT_STRING;
+
+
+extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
+extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
+
+
+/* Object interface: IUnknown, ver. 0.0,
+ GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IDispatch, ver. 0.0,
+ GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IProjDef, ver. 0.0,
+ GUID={0x28849AA6,0xE8FB,0x4077,{0x8D,0x7A,0xD8,0x3C,0xDF,0xC2,0xDC,0x44}} */
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IProjDef_ServerInfo;
+
+#pragma code_seg(".orpc")
+extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1];
+
+static const MIDL_STUB_DESC Object_StubDesc =
+ {
+ 0,
+ NdrOleAllocate,
+ NdrOleFree,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ __MIDL_TypeFormatString.Format,
+ 1, /* -error bounds_check flag */
+ 0x20000, /* Ndr library version */
+ 0,
+ 0x50100a4, /* MIDL Version 5.1.164 */
+ 0,
+ UserMarshalRoutines,
+ 0, /* notify & notify_flag routine table */
+ 1, /* Flags */
+ 0, /* Reserved3 */
+ 0, /* Reserved4 */
+ 0 /* Reserved5 */
+ };
+
+static const unsigned short IProjDef_FormatStringOffsetTable[] =
+ {
+ (unsigned short) -1,
+ (unsigned short) -1,
+ (unsigned short) -1,
+ (unsigned short) -1,
+ 0,
+ 34,
+ 86,
+ 114,
+ 142
+ };
+
+static const MIDL_SERVER_INFO IProjDef_ServerInfo =
+ {
+ &Object_StubDesc,
+ 0,
+ __MIDL_ProcFormatString.Format,
+ &IProjDef_FormatStringOffsetTable[-3],
+ 0,
+ 0,
+ 0,
+ 0
+ };
+
+static const MIDL_STUBLESS_PROXY_INFO IProjDef_ProxyInfo =
+ {
+ &Object_StubDesc,
+ __MIDL_ProcFormatString.Format,
+ &IProjDef_FormatStringOffsetTable[-3],
+ 0,
+ 0,
+ 0
+ };
+
+CINTERFACE_PROXY_VTABLE(12) _IProjDefProxyVtbl =
+{
+ &IProjDef_ProxyInfo,
+ &IID_IProjDef,
+ IUnknown_QueryInterface_Proxy,
+ IUnknown_AddRef_Proxy,
+ IUnknown_Release_Proxy ,
+ 0 /* (void *)-1 /* IDispatch::GetTypeInfoCount */ ,
+ 0 /* (void *)-1 /* IDispatch::GetTypeInfo */ ,
+ 0 /* (void *)-1 /* IDispatch::GetIDsOfNames */ ,
+ 0 /* IDispatch_Invoke_Proxy */ ,
+ (void *)-1 /* IProjDef::Initialize */ ,
+ (void *)-1 /* IProjDef::TransformPoint3D */ ,
+ (void *)-1 /* IProjDef::GetHandle */ ,
+ (void *)-1 /* IProjDef::IsLatLong */ ,
+ (void *)-1 /* IProjDef::GetLastError */
+};
+
+
+static const PRPC_STUB_FUNCTION IProjDef_table[] =
+{
+ STUB_FORWARDING_FUNCTION,
+ STUB_FORWARDING_FUNCTION,
+ STUB_FORWARDING_FUNCTION,
+ STUB_FORWARDING_FUNCTION,
+ NdrStubCall2,
+ NdrStubCall2,
+ NdrStubCall2,
+ NdrStubCall2,
+ NdrStubCall2
+};
+
+CInterfaceStubVtbl _IProjDefStubVtbl =
+{
+ &IID_IProjDef,
+ &IProjDef_ServerInfo,
+ 12,
+ &IProjDef_table[-3],
+ CStdStubBuffer_DELEGATING_METHODS
+};
+
+#pragma data_seg(".rdata")
+
+static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1] =
+ {
+
+ {
+ BSTR_UserSize
+ ,BSTR_UserMarshal
+ ,BSTR_UserUnmarshal
+ ,BSTR_UserFree
+ }
+
+ };
+
+
+#if !defined(__RPC_WIN32__)
+#error Invalid build platform for this stub.
+#endif
+
+#if !(TARGET_IS_NT40_OR_LATER)
+#error You need a Windows NT 4.0 or later to run this stub because it uses these features:
+#error -Oif or -Oicf, [wire_marshal] or [user_marshal] attribute, more than 32 methods in the interface.
+#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
+#error This app will die there with the RPC_X_WRONG_STUB_VERSION error.
+#endif
+
+
+static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
+ {
+ 0,
+ {
+
+ /* Procedure Initialize */
+
+ 0x33, /* FC_AUTO_HANDLE */
+ 0x6c, /* Old Flags: object, Oi2 */
+/* 2 */ NdrFcLong( 0x0 ), /* 0 */
+/* 6 */ NdrFcShort( 0x7 ), /* 7 */
+#ifndef _ALPHA_
+/* 8 */ NdrFcShort( 0x10 ), /* x86, MIPS, PPC Stack size/offset = 16 */
+#else
+ NdrFcShort( 0x20 ), /* Alpha Stack size/offset = 32 */
+#endif
+/* 10 */ NdrFcShort( 0x0 ), /* 0 */
+/* 12 */ NdrFcShort( 0x10 ), /* 16 */
+/* 14 */ 0x6, /* Oi2 Flags: clt must size, has return, */
+ 0x3, /* 3 */
+
+ /* Parameter proj_string */
+
+/* 16 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */
+#ifndef _ALPHA_
+/* 18 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
+#else
+ NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
+#endif
+/* 20 */ NdrFcShort( 0x1a ), /* Type Offset=26 */
+
+ /* Parameter success */
+
+/* 22 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
+#ifndef _ALPHA_
+/* 24 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
+#else
+ NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
+#endif
+/* 26 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Return value */
+
+/* 28 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
+#ifndef _ALPHA_
+/* 30 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
+#else
+ NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
+#endif
+/* 32 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Procedure TransformPoint3D */
+
+/* 34 */ 0x33, /* FC_AUTO_HANDLE */
+ 0x6c, /* Old Flags: object, Oi2 */
+/* 36 */ NdrFcLong( 0x0 ), /* 0 */
+/* 40 */ NdrFcShort( 0x8 ), /* 8 */
+#ifndef _ALPHA_
+/* 42 */ NdrFcShort( 0x1c ), /* x86, MIPS, PPC Stack size/offset = 28 */
+#else
+ NdrFcShort( 0x38 ), /* Alpha Stack size/offset = 56 */
+#endif
+/* 44 */ NdrFcShort( 0x30 ), /* 48 */
+/* 46 */ NdrFcShort( 0x40 ), /* 64 */
+/* 48 */ 0x6, /* Oi2 Flags: clt must size, has return, */
+ 0x6, /* 6 */
+
+ /* Parameter srcProj */
+
+/* 50 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */
+#ifndef _ALPHA_
+/* 52 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
+#else
+ NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
+#endif
+/* 54 */ NdrFcShort( 0x28 ), /* Type Offset=40 */
+
+ /* Parameter x */
+
+/* 56 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
+#ifndef _ALPHA_
+/* 58 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
+#else
+ NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
+#endif
+/* 60 */ 0xc, /* FC_DOUBLE */
+ 0x0, /* 0 */
+
+ /* Parameter y */
+
+/* 62 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
+#ifndef _ALPHA_
+/* 64 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
+#else
+ NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
+#endif
+/* 66 */ 0xc, /* FC_DOUBLE */
+ 0x0, /* 0 */
+
+ /* Parameter z */
+
+/* 68 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
+#ifndef _ALPHA_
+/* 70 */ NdrFcShort( 0x10 ), /* x86, MIPS, PPC Stack size/offset = 16 */
+#else
+ NdrFcShort( 0x20 ), /* Alpha Stack size/offset = 32 */
+#endif
+/* 72 */ 0xc, /* FC_DOUBLE */
+ 0x0, /* 0 */
+
+ /* Parameter success */
+
+/* 74 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
+#ifndef _ALPHA_
+/* 76 */ NdrFcShort( 0x14 ), /* x86, MIPS, PPC Stack size/offset = 20 */
+#else
+ NdrFcShort( 0x28 ), /* Alpha Stack size/offset = 40 */
+#endif
+/* 78 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Return value */
+
+/* 80 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
+#ifndef _ALPHA_
+/* 82 */ NdrFcShort( 0x18 ), /* x86, MIPS, PPC Stack size/offset = 24 */
+#else
+ NdrFcShort( 0x30 ), /* Alpha Stack size/offset = 48 */
+#endif
+/* 84 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Procedure GetHandle */
+
+/* 86 */ 0x33, /* FC_AUTO_HANDLE */
+ 0x6c, /* Old Flags: object, Oi2 */
+/* 88 */ NdrFcLong( 0x0 ), /* 0 */
+/* 92 */ NdrFcShort( 0x9 ), /* 9 */
+#ifndef _ALPHA_
+/* 94 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
+#else
+ NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
+#endif
+/* 96 */ NdrFcShort( 0x0 ), /* 0 */
+/* 98 */ NdrFcShort( 0x10 ), /* 16 */
+/* 100 */ 0x4, /* Oi2 Flags: has return, */
+ 0x2, /* 2 */
+
+ /* Parameter pHandle */
+
+/* 102 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
+#ifndef _ALPHA_
+/* 104 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
+#else
+ NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
+#endif
+/* 106 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Return value */
+
+/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
+#ifndef _ALPHA_
+/* 110 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
+#else
+ NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
+#endif
+/* 112 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Procedure IsLatLong */
+
+/* 114 */ 0x33, /* FC_AUTO_HANDLE */
+ 0x6c, /* Old Flags: object, Oi2 */
+/* 116 */ NdrFcLong( 0x0 ), /* 0 */
+/* 120 */ NdrFcShort( 0xa ), /* 10 */
+#ifndef _ALPHA_
+/* 122 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
+#else
+ NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
+#endif
+/* 124 */ NdrFcShort( 0x0 ), /* 0 */
+/* 126 */ NdrFcShort( 0x10 ), /* 16 */
+/* 128 */ 0x4, /* Oi2 Flags: has return, */
+ 0x2, /* 2 */
+
+ /* Parameter result */
+
+/* 130 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
+#ifndef _ALPHA_
+/* 132 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
+#else
+ NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
+#endif
+/* 134 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Return value */
+
+/* 136 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
+#ifndef _ALPHA_
+/* 138 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
+#else
+ NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
+#endif
+/* 140 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ /* Procedure GetLastError */
+
+/* 142 */ 0x33, /* FC_AUTO_HANDLE */
+ 0x6c, /* Old Flags: object, Oi2 */
+/* 144 */ NdrFcLong( 0x0 ), /* 0 */
+/* 148 */ NdrFcShort( 0xb ), /* 11 */
+#ifndef _ALPHA_
+/* 150 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
+#else
+ NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
+#endif
+/* 152 */ NdrFcShort( 0x0 ), /* 0 */
+/* 154 */ NdrFcShort( 0x8 ), /* 8 */
+/* 156 */ 0x5, /* Oi2 Flags: srv must size, has return, */
+ 0x2, /* 2 */
+
+ /* Parameter error */
+
+/* 158 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
+#ifndef _ALPHA_
+/* 160 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
+#else
+ NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
+#endif
+/* 162 */ NdrFcShort( 0x46 ), /* Type Offset=70 */
+
+ /* Return value */
+
+/* 164 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
+#ifndef _ALPHA_
+/* 166 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
+#else
+ NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
+#endif
+/* 168 */ 0x8, /* FC_LONG */
+ 0x0, /* 0 */
+
+ 0x0
+ }
+ };
+
+static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
+ {
+ 0,
+ {
+ NdrFcShort( 0x0 ), /* 0 */
+/* 2 */
+ 0x12, 0x0, /* FC_UP */
+/* 4 */ NdrFcShort( 0xc ), /* Offset= 12 (16) */
+/* 6 */
+ 0x1b, /* FC_CARRAY */
+ 0x1, /* 1 */
+/* 8 */ NdrFcShort( 0x2 ), /* 2 */
+/* 10 */ 0x9, /* Corr desc: FC_ULONG */
+ 0x0, /* */
+/* 12 */ NdrFcShort( 0xfffc ), /* -4 */
+/* 14 */ 0x6, /* FC_SHORT */
+ 0x5b, /* FC_END */
+/* 16 */
+ 0x17, /* FC_CSTRUCT */
+ 0x3, /* 3 */
+/* 18 */ NdrFcShort( 0x8 ), /* 8 */
+/* 20 */ NdrFcShort( 0xfffffff2 ), /* Offset= -14 (6) */
+/* 22 */ 0x8, /* FC_LONG */
+ 0x8, /* FC_LONG */
+/* 24 */ 0x5c, /* FC_PAD */
+ 0x5b, /* FC_END */
+/* 26 */ 0xb4, /* FC_USER_MARSHAL */
+ 0x83, /* 131 */
+/* 28 */ NdrFcShort( 0x0 ), /* 0 */
+/* 30 */ NdrFcShort( 0x4 ), /* 4 */
+/* 32 */ NdrFcShort( 0x0 ), /* 0 */
+/* 34 */ NdrFcShort( 0xffffffe0 ), /* Offset= -32 (2) */
+/* 36 */
+ 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
+/* 38 */ 0x8, /* FC_LONG */
+ 0x5c, /* FC_PAD */
+/* 40 */
+ 0x2f, /* FC_IP */
+ 0x5a, /* FC_CONSTANT_IID */
+/* 42 */ NdrFcLong( 0x0 ), /* 0 */
+/* 46 */ NdrFcShort( 0x0 ), /* 0 */
+/* 48 */ NdrFcShort( 0x0 ), /* 0 */
+/* 50 */ 0xc0, /* 192 */
+ 0x0, /* 0 */
+/* 52 */ 0x0, /* 0 */
+ 0x0, /* 0 */
+/* 54 */ 0x0, /* 0 */
+ 0x0, /* 0 */
+/* 56 */ 0x0, /* 0 */
+ 0x46, /* 70 */
+/* 58 */
+ 0x11, 0x8, /* FC_RP [simple_pointer] */
+/* 60 */ 0xc, /* FC_DOUBLE */
+ 0x5c, /* FC_PAD */
+/* 62 */
+ 0x11, 0x4, /* FC_RP [alloced_on_stack] */
+/* 64 */ NdrFcShort( 0x6 ), /* Offset= 6 (70) */
+/* 66 */
+ 0x13, 0x0, /* FC_OP */
+/* 68 */ NdrFcShort( 0xffffffcc ), /* Offset= -52 (16) */
+/* 70 */ 0xb4, /* FC_USER_MARSHAL */
+ 0x83, /* 131 */
+/* 72 */ NdrFcShort( 0x0 ), /* 0 */
+/* 74 */ NdrFcShort( 0x4 ), /* 4 */
+/* 76 */ NdrFcShort( 0x0 ), /* 0 */
+/* 78 */ NdrFcShort( 0xfffffff4 ), /* Offset= -12 (66) */
+
+ 0x0
+ }
+ };
+
+const CInterfaceProxyVtbl * _COMTest1_ProxyVtblList[] =
+{
+ ( CInterfaceProxyVtbl *) &_IProjDefProxyVtbl,
+ 0
+};
+
+const CInterfaceStubVtbl * _COMTest1_StubVtblList[] =
+{
+ ( CInterfaceStubVtbl *) &_IProjDefStubVtbl,
+ 0
+};
+
+PCInterfaceName const _COMTest1_InterfaceNamesList[] =
+{
+ "IProjDef",
+ 0
+};
+
+const IID * _COMTest1_BaseIIDList[] =
+{
+ &IID_IDispatch,
+ 0
+};
+
+
+#define _COMTest1_CHECK_IID(n) IID_GENERIC_CHECK_IID( _COMTest1, pIID, n)
+
+int __stdcall _COMTest1_IID_Lookup( const IID * pIID, int * pIndex )
+{
+
+ if(!_COMTest1_CHECK_IID(0))
+ {
+ *pIndex = 0;
+ return 1;
+ }
+
+ return 0;
+}
+
+const ExtendedProxyFileInfo COMTest1_ProxyFileInfo =
+{
+ (PCInterfaceProxyVtblList *) & _COMTest1_ProxyVtblList,
+ (PCInterfaceStubVtblList *) & _COMTest1_StubVtblList,
+ (const PCInterfaceName * ) & _COMTest1_InterfaceNamesList,
+ (const IID ** ) & _COMTest1_BaseIIDList,
+ & _COMTest1_IID_Lookup,
+ 1,
+ 2,
+ 0, /* table of [async_uuid] interfaces */
+ 0, /* Filler1 */
+ 0, /* Filler2 */
+ 0 /* Filler3 */
+};
diff --git a/com/COMTest1ps.def b/com/COMTest1ps.def
new file mode 100755
index 00000000..1eb26051
--- /dev/null
+++ b/com/COMTest1ps.def
@@ -0,0 +1,11 @@
+
+LIBRARY "COMTest1PS"
+
+DESCRIPTION 'Proxy/Stub DLL'
+
+EXPORTS
+ DllGetClassObject @1 PRIVATE
+ DllCanUnloadNow @2 PRIVATE
+ GetProxyDllInfo @3 PRIVATE
+ DllRegisterServer @4 PRIVATE
+ DllUnregisterServer @5 PRIVATE
diff --git a/com/COMTest1ps.mk b/com/COMTest1ps.mk
new file mode 100755
index 00000000..c55034d1
--- /dev/null
+++ b/com/COMTest1ps.mk
@@ -0,0 +1,16 @@
+
+COMTest1ps.dll: dlldata.obj COMTest1_p.obj COMTest1_i.obj
+ link /dll /out:COMTest1ps.dll /def:COMTest1ps.def /entry:DllMain dlldata.obj COMTest1_p.obj COMTest1_i.obj \
+ kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib \
+
+.c.obj:
+ cl /c /Ox /DWIN32 /D_WIN32_WINNT=0x0400 /DREGISTER_PROXY_DLL \
+ $<
+
+clean:
+ @del COMTest1ps.dll
+ @del COMTest1ps.lib
+ @del COMTest1ps.exp
+ @del dlldata.obj
+ @del COMTest1_p.obj
+ @del COMTest1_i.obj
diff --git a/com/ProjDef.cpp b/com/ProjDef.cpp
new file mode 100755
index 00000000..c64a6e19
--- /dev/null
+++ b/com/ProjDef.cpp
@@ -0,0 +1,115 @@
+// ProjDef.cpp : Implementation of CProjDef
+#include "stdafx.h"
+#include "COMTest1.h"
+#include "ProjDef.h"
+#include "proj_api.h"
+
+/////////////////////////////////////////////////////////////////////////////
+// CProjDef
+
+
+STDMETHODIMP CProjDef::Initialize(BSTR proj_string, int *success)
+{
+ USES_CONVERSION;
+ psProj = pj_init_plus( W2A(proj_string) );
+
+ if( psProj != NULL )
+ *success = 1;
+ else
+ {
+ SetProjError( "pj_init_plus failed." );
+ //SetError( (const char *) W2A(proj_string) );
+ *success = 0;
+ }
+
+ return S_OK;
+}
+
+STDMETHODIMP CProjDef::TransformPoint3D(IUnknown *srcProj, double *x, double *y, double *z, int *success)
+{
+ void *psProjOther;
+ IProjDef *srcProjReal;
+
+ srcProj->QueryInterface( IID_IProjDef, (void **) &srcProjReal );
+ srcProjReal->GetHandle( (long *) &psProjOther );
+
+ if( psProjOther == NULL || psProj == NULL )
+ {
+ SetError( "One of projections not set." );
+ *success = 0;
+ return E_FAIL;
+ }
+
+ if( pj_is_latlong( psProjOther ) )
+ {
+ *x *= DEG_TO_RAD;
+ *y *= DEG_TO_RAD;
+ }
+
+ *success = pj_transform( psProjOther, psProj, 1, 0, x, y, z ) == 0;
+ if( ! *success )
+ SetProjError( "pj_transform failed." );
+
+ else if( pj_is_latlong( psProj ) )
+ {
+ *x *= RAD_TO_DEG;
+ *y *= RAD_TO_DEG;
+ }
+
+ return S_OK;
+}
+
+STDMETHODIMP CProjDef::GetHandle(long *pHandle)
+{
+ *pHandle = (long) psProj;
+
+ return S_OK;
+}
+
+STDMETHODIMP CProjDef::IsLatLong(int *result)
+{
+ if( psProj != NULL )
+ {
+ *result = pj_is_latlong( (projPJ) psProj );
+ return S_OK;
+ }
+ else
+ {
+ SetError( "Projection is null" );
+ return E_FAIL;
+ }
+}
+
+STDMETHODIMP CProjDef::GetLastError( BSTR *error )
+{
+ *error = SysAllocString( sLastError );
+
+ return S_OK;
+}
+
+void CProjDef::SetError( const char *pszMessage )
+
+{
+ USES_CONVERSION;
+
+ if( sLastError != NULL )
+ {
+ SysFreeString( sLastError );
+ sLastError = NULL;
+ }
+
+ sLastError = SysAllocString( A2BSTR( pszMessage ) );
+}
+
+void CProjDef::SetProjError( const char *pszMessage )
+
+{
+ int *pj_errno = pj_get_errno_ref();
+
+ if( *pj_errno > 0 )
+ SetError( strerror( *pj_errno ) );
+ else if( *pj_errno < 0 )
+ SetError( pj_strerrno( *pj_errno ) );
+ else
+ SetError( pszMessage );
+}
diff --git a/com/ProjDef.h b/com/ProjDef.h
new file mode 100755
index 00000000..017bf48f
--- /dev/null
+++ b/com/ProjDef.h
@@ -0,0 +1,49 @@
+// ProjDef.h : Declaration of the CProjDef
+
+#ifndef __PROJDEF_H_
+#define __PROJDEF_H_
+
+#include "resource.h" // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// CProjDef
+class ATL_NO_VTABLE CProjDef :
+ public CComObjectRootEx<CComMultiThreadModel>,
+ public CComCoClass<CProjDef, &CLSID_ProjDef>,
+ public IDispatchImpl<IProjDef, &IID_IProjDef, &LIBID_PROJ4Lib>
+{
+public:
+ CProjDef()
+ {
+ psProj = NULL;
+ sLastError = NULL;
+ SetError("");
+ }
+
+DECLARE_REGISTRY_RESOURCEID(IDR_PROJDEF)
+
+DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+BEGIN_COM_MAP(CProjDef)
+ COM_INTERFACE_ENTRY(IProjDef)
+ COM_INTERFACE_ENTRY(IDispatch)
+END_COM_MAP()
+
+// IProjDef
+public:
+ STDMETHOD(GetLastError)( BSTR *error );
+ STDMETHOD(IsLatLong)(/*[out]*/ int *result);
+ STDMETHOD(GetHandle)(long *pHandle);
+ STDMETHOD(TransformPoint3D)(IUnknown *srcProj, double *x, double *y, double *z, int *success);
+ STDMETHOD(Initialize)(BSTR proj_string, int *success);
+
+private:
+ void SetError( const char *pszMessage );
+ void SetProjError( const char *pszMessage );
+
+ BSTR sLastError;
+ void *psProj;
+
+};
+
+#endif //__PROJDEF_H_
diff --git a/com/ProjDef.rgs b/com/ProjDef.rgs
new file mode 100755
index 00000000..76d519e3
--- /dev/null
+++ b/com/ProjDef.rgs
@@ -0,0 +1,26 @@
+HKCR
+{
+ COMTest1.ProjDef.1 = s 'ProjDef Class'
+ {
+ CLSID = s '{B9B8F0A3-D9F8-4537-9A03-329DC9AE144C}'
+ }
+ COMTest1.ProjDef = s 'ProjDef Class'
+ {
+ CLSID = s '{B9B8F0A3-D9F8-4537-9A03-329DC9AE144C}'
+ CurVer = s 'PROJ4.ProjDef.1'
+ }
+ NoRemove CLSID
+ {
+ ForceRemove {B9B8F0A3-D9F8-4537-9A03-329DC9AE144C} = s 'ProjDef Class'
+ {
+ ProgID = s 'PROJ4.ProjDef.1'
+ VersionIndependentProgID = s 'PROJ4.ProjDef'
+ ForceRemove 'Programmable'
+ InprocServer32 = s '%MODULE%'
+ {
+ val ThreadingModel = s 'Both'
+ }
+ 'TypeLib' = s '{A0ADE3D8-9A85-4BD3-AD56-BFEF42495130}'
+ }
+ }
+}
diff --git a/com/StdAfx.cpp b/com/StdAfx.cpp
new file mode 100755
index 00000000..a5eea178
--- /dev/null
+++ b/com/StdAfx.cpp
@@ -0,0 +1,12 @@
+// 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>
diff --git a/com/StdAfx.h b/com/StdAfx.h
new file mode 100755
index 00000000..6661a145
--- /dev/null
+++ b/com/StdAfx.h
@@ -0,0 +1,27 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently,
+// but are changed infrequently
+
+#if !defined(AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED_)
+#define AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define STRICT
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0400
+#endif
+#define _ATL_APARTMENT_THREADED
+
+#include <atlbase.h>
+//You may derive a class from CComModule and use it if you want to override
+//something, but do not change the name of _Module
+extern CComModule _Module;
+#include <atlcom.h>
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED)
diff --git a/com/VB6Test.frm b/com/VB6Test.frm
new file mode 100755
index 00000000..9fd7ce07
--- /dev/null
+++ b/com/VB6Test.frm
@@ -0,0 +1,50 @@
+VERSION 5.00
+Begin VB.Form Form1
+ Caption = "Form1"
+ ClientHeight = 3090
+ ClientLeft = 60
+ ClientTop = 450
+ ClientWidth = 4680
+ LinkTopic = "Form1"
+ ScaleHeight = 3090
+ ScaleWidth = 4680
+ StartUpPosition = 3 'Windows Default
+ Begin VB.CommandButton Command1
+ Caption = "Command1"
+ Height = 615
+ Left = 1680
+ TabIndex = 0
+ Top = 2160
+ Width = 975
+ End
+End
+Attribute VB_Name = "Form1"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Private Sub Command1_Click()
+ Dim pUTM As PROJ4Lib.IProjDef
+ Dim pLL As PROJ4Lib.IProjDef
+
+ Set pUTM = New PROJ4Lib.ProjDef
+ Set pLL = New PROJ4Lib.ProjDef
+
+ pUTM.Initialize ("+proj=utm +zone=11 +datum=WGS84")
+ pLL.Initialize ("+proj=latlong +datum=WGS84")
+
+ Dim X As Double, Y As Double, Z As Double
+
+ X = 25000
+ Y = 3000000
+ Z = 0
+
+ MsgBox X & " " & Y
+
+ If pLL.TransformPoint3D(pUTM, X, Y, Z) = 0 Then
+ MsgBox "TransformPoint3D " & pLL.GetLastError()
+ End If
+
+ MsgBox X & " " & Y
+
+End Sub
diff --git a/com/dlldata.c b/com/dlldata.c
new file mode 100755
index 00000000..94bcbfc0
--- /dev/null
+++ b/com/dlldata.c
@@ -0,0 +1,38 @@
+/*********************************************************
+ DllData file -- generated by MIDL compiler
+
+ DO NOT ALTER THIS FILE
+
+ This file is regenerated by MIDL on every IDL file compile.
+
+ To completely reconstruct this file, delete it and rerun MIDL
+ on all the IDL files in this DLL, specifying this file for the
+ /dlldata command line option
+
+*********************************************************/
+
+#define PROXY_DELEGATION
+
+#include <rpcproxy.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXTERN_PROXY_FILE( COMTest1 )
+
+
+PROXYFILE_LIST_START
+/* Start of list */
+ REFERENCE_PROXY_FILE( COMTest1 ),
+/* End of list */
+PROXYFILE_LIST_END
+
+
+DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
+
+#ifdef __cplusplus
+} /*extern "C" */
+#endif
+
+/* end of generated dlldata file */
diff --git a/com/resource.h b/com/resource.h
new file mode 100755
index 00000000..2c9c2c5e
--- /dev/null
+++ b/com/resource.h
@@ -0,0 +1,17 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by COMTest1.rc
+//
+#define IDS_PROJNAME 100
+#define IDR_PROJDEF 101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 201
+#define _APS_NEXT_COMMAND_VALUE 32768
+#define _APS_NEXT_CONTROL_VALUE 201
+#define _APS_NEXT_SYMED_VALUE 102
+#endif
+#endif