好的,这是我今天的怪异。
我为现有的C ++程序创建扩展,我无法访问源代码。

i写标准c / c ++ dll,我使用ijw调用c#dll。我没有在一段时间内完成这一点,但现在我试图在窗口7上工作7。我收到错误(错误0000036B1 - 不确定是应用程序的内部错误号,还是Windows错误。< / p>

我有多个虚拟PC(XP和Windows 7)DLL在XP上工作。如果安装Visual Studio 2008,它也适用于Windows 7。但不在清洁的Windows 7上安装了Microsoft Visual C ++ 2008 SP1可再分发包。

我可以在清洁的Windows 7盒上编译并运行直C ++ DLL,只要编译器开关设置为MT [D],但如果我设置/ CLR开关,则必须将其更改为MD [D]然后它在清洁的Windows 7框上失败。但是,没有安装Visual Studio 2008的Windows 7框。

关于我需要在干净的盒子上安装的想法? (除了课程的vs之外;-))

谢谢你的帮助。

l。李桑德斯

有帮助吗?

解决方案

好的这很糟糕。有人指出,我需要的文件是调试版本,这意味着我在调试模式下编译了我的DLL。他建议我尝试发布模式。

所以,使用我的虚拟PC的新副本运行Windows 7 Basic(安装了3.5个C ++ Redist)我复制了我的原始DLL(调试模式中的一个)只是为了验证这个虚拟PC是否有问题。是的。

然后我复制超过在释放模式下编译的DLL。有效。

好的,我正式想要砸到墙上。

谢谢你的时间。

l。李桑德斯

其他提示

您将需要VC ++运行时重新发行(它具有用于本机C ++的支持代码)和.NET Framework 3.5(具有C ++ / CLI的支持代码)。

.NET 3.5应该配备Win7,但VS2008 SP1附带.NET 3.5 SP1,因此我建议您从Windows更新安装所有.NET更新。

现在我觉得很糟糕。它并不完全是Windows 7的干净安装7.我需要安装我正在编写扩展的应用程序。该程序的最新修补程序安装了Visual C ++ 2008 SP1可再分发包装。

嗯,我决定尝试创建一个小bitty c ++ / cli dll的安装项目,并告诉它包括依赖。它拉入2个文件:

c:\ program files \ common files \ merge modules \ microsoft_vc90_debugcrt_x86.msm C:\ Program Files \ Common Files \ Merge Modules \ policy_9_0_microsoft_vc90_debugcrt_x86.msm

我运行了安装和tiny应用程序。我手动复制了我的DLL和Lo,看看他们现在的工作。所以要将它工作我需要这两个文件。

为什么?为什么他们不包括在Redist包中?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top