Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Delphi+.Net dll部署(在另一台pc上)_C#_.net_Delphi_Dll_Com Interop - Fatal编程技术网

C# Delphi+.Net dll部署(在另一台pc上)

C# Delphi+.Net dll部署(在另一台pc上),c#,.net,delphi,dll,com-interop,C#,.net,Delphi,Dll,Com Interop,我开发了一个Delphi应用程序,它使用C编写的.NETDLL,使用另一个.NETDLL,可能是C。 让我给它们命名为A.dll和B.dll 我有A.dll的源代码,但没有B.dll。 我无法从Delphi应用程序中使用B.dll,因为B.dll仅为C应用程序编写,即没有COM互操作,所以我使用A.dll来处理B.dll B.dll创建2个管道以与A.dll交换消息。问题是B.dll不能!连接到不同计算机上的这些管道。 然而,如果我创建了一个.exe而不是.dll,那么所有的一切都是绝对正常的。

我开发了一个Delphi应用程序,它使用C编写的.NETDLL,使用另一个.NETDLL,可能是C。 让我给它们命名为A.dll和B.dll

我有A.dll的源代码,但没有B.dll。 我无法从Delphi应用程序中使用B.dll,因为B.dll仅为C应用程序编写,即没有COM互操作,所以我使用A.dll来处理B.dll

B.dll创建2个管道以与A.dll交换消息。问题是B.dll不能!连接到不同计算机上的这些管道。 然而,如果我创建了一个.exe而不是.dll,那么所有的一切都是绝对正常的。管道都连接好了,整个消息交换过程都正常

在我的电脑上,我总是建立一个.dll和Delphi应用程序。如何理解Visual Studio自动使用命令 1 regasm-要注册.dll, 2 tlbexp-获取.tlb文件

之后,我通过importtypelibrary命令将A.tlb导入Delphi应用程序

在另一台计算机上,这里的问题是,在A.dll过程中,管道从未连接。我使用日志来理解这一点。我说的永不连接是指无限等待c中pipe.WaitForConnection命令的结果

有人能帮我解决这个问题吗?为什么Delphi应用程序可以使用A.exe,但不能使用A.dll


谢谢,我已经调查过这个问题了。 首先,在其他dll中使用dll是个坏主意。根据许多文章,GetProcAddr和其他一些函数可能会出现问题。
其次,我开发了C应用程序来与B.dll和Delphi应用程序进行通信。此外,我使用管道来完成这项工作。

没有任何真实信息,任何人都无法帮助您。缺少响应的原因是没有可操作的详细信息。我认为通常没有理由避免A.dll调用B.dll。如果A.dll是COM可调用的包装器CCR,那么它的线程模型是什么,即MTA或STA?Delphi应用程序是否在具有相同线程模型的线程上实例化此COM对象?我已经看到,当客户端的线程模型与服务器不匹配时,它在某些计算机上工作,但在其他计算机上不工作。注意:原则上,不匹配的线程模型不会出现故障:COM处理MTA和STA之间的封送,但速度会较慢。取决于COM对象的功能,它可能无法工作,或者可能会使进程崩溃。这似乎无法回答您提出的问题,并且确实会做出错误的陈述。很抱歉,我没有及时回复。我几天前才开始编写与COM相关的应用程序。我想,在我的dll中我使用STA模型,因为没有更多的线程。然而,Delphi应用程序使用MTA,因为消息交换过程需要在其他线程中运行。很酷,你给了我这样的建议,关于需要有相同的线程模型,我的意思是对于Delphi应用程序和A.dll。你能给我一些关于这个主题的链接吗?看起来很有趣。