5

当我尝试在目标机器上分解我的应用程序时出现此错误。

我用谷歌搜索,发现一些 dll 需要注册(在我的应用程序中使用)

所以,我将 dll 复制到 System32 并做了 regsvr32

然后我得到了这个错误

Interop.ShockwaveFlashObject.dll 已加载 bt DllRegisterServer 入口点未找到。文件无法注册

一件奇怪的事情是,该应用程序不能只在一台机器上运行。我在 10 台不同的机器上进行了测试,一切都运行良好。它不能只在一台机器上工作。

有人可以帮我吗?

4

3 回答 3

2

Interop dll 不需要注册,它有效地包含一个指向现有 COM 注册对象的指针。

如果它遵循通常的命名约定,则看起来 ShockwaveFlashObject.dll 未在机器上注册(这将是您应该运行 regsvr32 的 DLL)。大概您需要安装 Shockwave/Flash(和/或检查安装的版本是否正确,如果您认为它已经在包装盒上)。

于 2010-07-02T08:25:04.987 回答
1

例如,您可以以管理员身份运行 cmd 并浏览到 system32 目录并运行以下命令:

for %1 in (*.dll) do regsvr32 /s %1

for %1 in (*.ocx) do regsvr32 /s %1
于 2011-09-20T08:58:49.757 回答
0

我相信,该互操作 dll 不是需要向 regsvr32.dll 注册的 COM dll,它是一个互操作 dll,它管理 COM 内容和托管内容之间的链接。

可能您需要注册一些其他 dll(即任何和所有 COM dll,可能是 ShockwaveFlashObject.dll),或者您缺少其他一些依赖项。与它工作的机器相比,它不工作的机器有什么不同?是否所有机器上都安装了所有依赖项(如闪存?)操作系统是否不同?也许一些较新的操作系统没有旧机器所具有的所有旧依赖项。

于 2010-07-02T08:23:17.520 回答