0

我有一个需要调用 C# dll 的 C++ 函数。C++ 函数只是将值发送到 C# dll 函数。C# dll 使用这些值生成一些文件,然后完成。

我的问题是,使用 COM 时,每次使用不同的计算机时都需要注册 DLL。那么,有没有办法注册 dll 文件并在构建时生成 .tlb 文件?

复制 $(TargetPath) $(TargetDir) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe $(TargetPath) /codebase CReportGenerationDLL.dll /tlb:CReportGenerationDLL.tlb

这是我尝试过的,但它不起作用..我退出代码 9009

//Pewdut

4

1 回答 1

4

如果您的意思是每次在另一台计算机上构建应用程序时自动注册您的 COM 对象,那么答案是(假设您使用 VS2010 进行构建):转到 Project/Properties/Build 事件并添加到“构建后事件命令行”以下行:

regasm <path to your COM .dll>

如果您的意思是每次在另一台计算机上运行您的应用程序时自动注册您的 COM 对象,那么您可以创建一个批处理文件,其中包含:

regasm <path to your COM .dll>
<path to your application>app.exe"

或者只是使用 ShellExecute 函数从您的应用程序中调用 regasm.exe。

您可能需要添加 /s 开关以使注册静默。

错误 9009 表示您的 regasm 路径错误,请参见此处

复制 $(TargetPath) $(TargetDir) 不合适,你为什么需要这个,你想达到什么目的?

于 2012-04-24T14:48:31.593 回答