COM Interop,DllImport vs.添加引用

iLe*_*ing 4 c# com interop

我正试图进入COM互操作

所以,有一个简单的例子:

  SpeechLib.SpVoice voice = new SpVoice();
  voice.Speak("Hello sucker!",SpeechVoiceSpeakFlags.SVSFDefault);
Run Code Online (Sandbox Code Playgroud)

当然我必须在%windir%\system32\speech\common\sapi.dll之前添加引用,VS将添加Interop.SpeechLib.dll到项目文件夹中,现在我必须用我的简单4kb应用程序分发这个200kb的库.

我可以使用[DllImport]而不是添加引用,因为在大多数情况下,语音库已经在客户端的计算机上显示了吗?

你能告诉我如何使用DllImport技术重写上面的代码吗?

Zac*_*ham 5

[DllImport]如果Speech API是COM API,则不太可能使用"Add Reference"而不是"Add Reference".

[DLLImport] 用于调用非托管的Win32 DLL,而"添加引用"是运行tlbimp.exe(typelib import)以启用.NET到COM互操作的捷径.

您可以在此处DllImportAttribute 此处了解有关COM Interop的更多信息.Pinvoke.net是一个寻找DllImport签名的好网站.