C++;生成器:进程外COM服务器

C++;生成器:进程外COM服务器,com,64-bit,c++builder,out-of-process,Com,64 Bit,C++builder,Out Of Process,可能我错过了一些非常基本的东西,但我还没有在stack overflow/google/etc上找到解决方案 我需要在C++ Builder(XE7)中编写一个COM服务器,如果这有什么区别的话,64位。作为第一步,我可以创建一个in-proc COM服务器,它可以编译、工作,并且可以正确注册。但是我需要一个进程外的COM服务器,我在转换过程中迷失了方向。(需要:外部要求在proc COM之外使用,我无法更改。) 我从文档()中了解到的是:很可能我应该正确设置“线程模型”,可能还需要一些其他修改

可能我错过了一些非常基本的东西,但我还没有在stack overflow/google/etc上找到解决方案

我需要在C++ Builder(XE7)中编写一个COM服务器,如果这有什么区别的话,64位。作为第一步,我可以创建一个in-proc COM服务器,它可以编译、工作,并且可以正确注册。但是我需要一个进程外的COM服务器,我在转换过程中迷失了方向。(需要:外部要求在proc COM之外使用,我无法更改。)

我从文档()中了解到的是:很可能我应该正确设置“线程模型”,可能还需要一些其他修改(),但不管我怎么做,我都无法从中获得EXE


我真的很感激能给我一个例子的指针,或者几个单词,它们的本质区别在哪里,或者我应该进一步研究哪个对话框,等等。

File->New->Other->VCL Forms应用程序(创建.exe)。表单显示后,使用File->New->Other->ActiveX->COM对象。如果您不需要GUI,您可以删除
VCL表单应用程序创建的默认
TForm
。谢谢!这确实向前迈出了一步,但我仍然错过了一个细节:如何注册COM服务器?在这里,它似乎或多或少等同于仅以EXE形式存在的DLL。但是通过上面的解决方案,我得到了一个包含COM对象的应用程序。如何(通过windows注册表)向COM客户端公开此COM对象?我尝试通过以下方式将进程外COM服务器注册到注册表中:使用regsrv32.exe注册进程内COM服务器。通过使用
/regserver
命令行开关运行.exe,可以注册用Delphi/C++Builder编写的COM out proc服务器。无论哪种方式,COM对象都会在注册表中注册,然后客户端可以以相同的方式访问它(
CoCreateInstance()
),而不必关心它是在proc中还是在out-proc中。实际上,我意识到上面的答案是正确的,只是因为我在COM方面的背景有限,我不理解它。我错过了但现在很清楚:当启动exe时,它会处理CLI参数,注册/取消注册COM对象并退出。如果没有/regserver/unregserver,它将运行主代码。(我最初的错误理解是有两种exe,一种用于常规应用程序,另一种用于COM服务器。)无论如何,感谢帮助.File->New->Other->VCL表单应用程序(创建.exe)。表单显示后,使用File->New->Other->ActiveX->COM对象。如果您不需要GUI,您可以删除
VCL表单应用程序创建的默认
TForm
。谢谢!这确实向前迈出了一步,但我仍然错过了一个细节:如何注册COM服务器?在这里,它似乎或多或少等同于仅以EXE形式存在的DLL。但是通过上面的解决方案,我得到了一个包含COM对象的应用程序。如何(通过windows注册表)向COM客户端公开此COM对象?我尝试通过以下方式将进程外COM服务器注册到注册表中:使用regsrv32.exe注册进程内COM服务器。通过使用
/regserver
命令行开关运行.exe,可以注册用Delphi/C++Builder编写的COM out proc服务器。无论哪种方式,COM对象都会在注册表中注册,然后客户端可以以相同的方式访问它(
CoCreateInstance()
),而不必关心它是在proc中还是在out-proc中。实际上,我意识到上面的答案是正确的,只是因为我在COM方面的背景有限,我不理解它。我错过了但现在很清楚:当启动exe时,它会处理CLI参数,注册/取消注册COM对象并退出。如果没有/regserver/unregserver,它将运行主代码。(我最初的错误理解是,有两种EXE,一种用于常规应用程序,另一种用于COM服务器。)无论如何,谢谢你的帮助。