C++:使多个进程同时访问 DLL

C++: Making a DLL accessible to multiple processes concurrently

本文关键字:访问 DLL 进程 C++      更新时间:2023-10-16

我在VS2010 C++创建了一个DLL。

在我看来,两个程序无法同时访问它。首先程序 1 必须完成对 DLL 的调用,然后 DLL 才会处理来自另一个程序的调用。

我想知道项目设置中是否有某个开关需要设置以使DLL"多线程"。

DLL 由 Windows SAPI 使用。一个程序(在我的例子中是两个程序)可以引用SAPI并使计算机语音(计算机语音是DLL)说些什么。我希望两个程序同时说话,但由于它们不说话(它们互相等待),我希望我的 DLL 是单线程的。

谢谢。

语音 API 序列化来自多个源的语音,因此它们不会同时播放。 一个将首先播放,然后播放下一个,依此类推,直到没有更多待处理的语音要播放。 您可以通过注册表禁用此功能,如下所述:http://msdn.microsoft.com/en-us/library/ee431801(v=vs.85).aspx#_Toc494873956

特别是HKEY_LOCAL_MACHINESOFTWAREMICROSOFTSpeechAudioOutput<AudioOutput1>Attributes中的NoSerializeAccess值,其中<AudioOutput1>是音频输出设备的名称。

此信息可在 http://msdn.microsoft.com/en-us/library/speechplatform_ispaudio.aspx

为了防止多个 TTS 语音或引擎同时说话,语音平台将输出序列化为实现 ISpAudio 接口的对象。若要禁用对 ISpAudio 对象的输出序列化,请将名为"NoSerializeAccess"的属性放在其对象令牌的"属性"文件夹中。