Skip to content

Commit

Permalink
Some tweaks required to build 64 bit, modify registry for 64 bit <-> …
Browse files Browse the repository at this point in the history
…32 bit com (not complete/working),

 and more diagnostics visa outputdebugstring.
  • Loading branch information
dougransom committed Nov 24, 2024
1 parent a9c1dbb commit a6b1b90
Show file tree
Hide file tree
Showing 13 changed files with 326 additions and 3 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ MacroSystem/*_vcl.py
# updatating natlink
update_natlink.ps1

#cruft belwow create_natlink debug program
/create_natlink/*
# documentation
/documentation/_build
/documentation/natlink_build
Expand Down
8 changes: 8 additions & 0 deletions NatlinkSource/APPSUPP.REG
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ HKCR
{
val ThreadingModel = s 'Apartment'
}
val AppID = s '{dd990001-bb89-11d2-b031-0060088dc929}'
}
}
NoRemove AppID
{
ForceRemove {dd990001-bb89-11d2-b031-0060088dc929} = s 'Python Subsystem for NatSpeak'
{
val DllSurrogate = s ''
}
}
}
5 changes: 4 additions & 1 deletion NatlinkSource/DragonCode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1662,7 +1662,7 @@ SDATA makeEmptyGrammar()
BOOL CDragonCode::natConnect( IServiceProvider * pIDgnSite, BOOL bUseThreads )
{
HRESULT rc;

OutputDebugString(L"CDragonCode::natConnect");
NOTDURING_INIT( "natConnect" );
NOTDURING_PAUSED( "natConnect" );

Expand Down Expand Up @@ -1692,13 +1692,16 @@ BOOL CDragonCode::natConnect( IServiceProvider * pIDgnSite, BOOL bUseThreads )

if( pIDgnSite != NULL )
{
OutputDebugString(L"CDragonCode::natConnect new MessageWindow");
m_pSecdThrd = new MessageWindow();
}

// Connect to NatSpeak

if( !initGetSiteObject( pIDgnSite ) )
{
OutputDebugString(L"CDragonCode::natConnect initGetSiteObject failed");

return FALSE;
}

Expand Down
4 changes: 2 additions & 2 deletions NatlinkSource/Exceptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ void reportError( int errorType, const char * pszFormat, ... )
va_start( pArgs, pszFormat );
vsprintf( szErrorMsg, pszFormat, pArgs );
va_end( pArgs );

OutputDebugStringA(szErrorMsg);
PyErr_SetString( ErrObjects[errorType], szErrorMsg );
}

Expand Down Expand Up @@ -225,6 +225,6 @@ void reportError(
#else
sprintf( szErrorMsg, "%s (%s)", pszMessage, szNatSpeakErr );
#endif

OutputDebugStringA(szErrorMsg);
PyErr_SetString( ErrObjects[errorType], szErrorMsg );
}
26 changes: 26 additions & 0 deletions NatlinkSource/dgnSiteSurrogate.rgs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
HKLM
{
NoRemove SOFTWARE
{
NoRemove WOW6432Node
{
NoRemove Classes
{
NoRemove CLSID
{
NoRemove {dd100006-6205-11cf-ae61-0000e8a28647}
{
val AppID = s '{dd100006-6205-11cf-ae61-0000e8a28647}'
}
}
}

NoRemove AppID
{
NoRemove {dd100006-6205-11cf-ae61-0000e8a28647}
{
val DllSurrogate = s ''
}
}
}
}
3 changes: 3 additions & 0 deletions NatlinkSource/pythwrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,8 +269,11 @@ extern "C" static PyObject *
natlink_natConnect( PyObject *self, PyObject *args )
{
int bUseThreads = FALSE;
OutputDebugString(__FILE__ L"natlink_natconnect PyArg_ParseTuple " );
if( !PyArg_ParseTuple( args, "|i:natConnect", &bUseThreads ) )
{
OutputDebugString(__FILE__ L"natlink_natconnect PyArg_ParseTuple Failed " );

return NULL;
}

Expand Down
8 changes: 8 additions & 0 deletions NatlinkSource/registry steps.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID\{dd100006-6205-11cf-ae61-0000e8a28647}
Add value AppID: {dd100006-6205-11cf-ae61-0000e8a28647}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\AppID\{dd100006-6205-11cf-ae61-0000e8a28647}

Add value with an empty string:

DllSurrogate
80 changes: 80 additions & 0 deletions create_natlink/create_natlink.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// create_natlink_cpp.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <combaseapi.h>
const wchar_t natlink_clsid_str[] = L"{dd990001-bb89-11d2-b031-0060088dc929}";
const wchar_t x_str[] = L"{f7a1eb9e-049e-4aa4-a742-94cb04551f2d}";
CLSID x_clsid;
//. X AppID {A1F40596-9860-4B32-8032-75CC8D211AB9}
//dragon site object HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\AppID\{dd100006-6205-11cf-ae61-0000e8a28647}
const wchar_t dgn_site_str[] = L"{dd100006-6205-11cf-ae61-0000e8a28647}";
CLSID natlink_clsid;
CLSID dgn_site_clsid;

#include <atlbase.h>
#include <string>
void hr_check(HRESULT hr, std::string msg)
{
std::cout << msg << " HRESULT: " << hr << std::endl;
if (hr < 0)
{
exit(hr);
}

}
int main1()
{
HRESULT hr0 = CoInitialize(0);
hr0 = CLSIDFromString(x_str, &x_clsid);

std::cout << "x clsid str " << x_str;
IUnknown* pUnk = 0;

int method = CLSCTX_ALL;
// int method = CLSCTX_LOCAL_SERVER;

HRESULT hr1 = CoCreateInstance(x_clsid, 0,method, IID_IUnknown, (void**)&pUnk);
std::cout << "HR0 " << hr0 << " HR1 " << hr1 << "\npress return";

std::string str;
std::getline(std::cin, str);
return 0;

}

int main()
{
HRESULT hr0 = CoInitialize(0);
hr_check(hr0, "CoInitialize");
CLSID clsid;
wchar_t const * class_string = dgn_site_str;

auto hr1 = CLSIDFromString(class_string, &clsid);
hr_check(hr1, "CLSID From String");
IUnknown* pUnk = 0;
// int method = CLSCTX_ALL;
int method = CLSCTX_LOCAL_SERVER;

HRESULT hr2 = CoCreateInstance(clsid, 0, method, IID_IUnknown, (void**)&pUnk);


hr_check(hr2, "CoCreateInstance ");

std::cout << "Press enter";
std::string str;
std::getline(std::cin, str);
return 0;

}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
31 changes: 31 additions & 0 deletions create_natlink/create_natlink.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35312.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "create_natlink", "create_natlink.vcxproj", "{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Debug|x64.ActiveCfg = Debug|x64
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Debug|x64.Build.0 = Debug|x64
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Debug|x86.ActiveCfg = Debug|Win32
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Debug|x86.Build.0 = Debug|Win32
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Release|x64.ActiveCfg = Release|x64
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Release|x64.Build.0 = Release|x64
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Release|x86.ActiveCfg = Release|Win32
{77A62DB3-0DAD-4FBE-AC19-04904A1F3160}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DCEF379B-EAF8-458C-BB0B-C25FA1E1F3EE}
EndGlobalSection
EndGlobal
135 changes: 135 additions & 0 deletions create_natlink/create_natlink.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{77a62db3-0dad-4fbe-ac19-04904a1f3160}</ProjectGuid>
<RootNamespace>createnatlink</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="create_natlink.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
22 changes: 22 additions & 0 deletions create_natlink/create_natlink.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="create_natlink.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
4 changes: 4 additions & 0 deletions create_natlink/create_natlink.vcxproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
Loading

0 comments on commit a6b1b90

Please sign in to comment.