有一个C#项目的解决方案引用托管C ++库,该库反过来引用本机C ++库。 C#项目包含BaseUserControl和ChildUserControl,它扩展了它。
问题是:如果在BaseUserControl的构造函数中调用来自本机C ++的代码(通过托管C ++库),则无法在设计器视图中查看ChildUserControl;也不能将BaseUserControl或ChildUserControl添加到表单中。我们收到以下错误:
无法加载文件或程序集'TestLibCPP,Version = 1.0.4877.30347, Culture = neutral,PublicKeyToken = null'或其依赖项之一。该 系统找不到指定的文件。
我们如何解决这个问题?
我添加了simple VS2012 solution来证明问题。这是一个基于我们在最近从VS2005转换为VS2012的大型代码库时遇到的问题的人为举例。
由于
答案 0 :(得分:0)
如果您有源代码,请尝试使用配置(X86平台)重建解决方案,然后尝试使用设计器打开Child UserControl。
答案 1 :(得分:0)
问题可能是您的本机dll构建在32位配置之上尝试在32位平台上构建项目
答案 2 :(得分:0)
尝试将GUITest平台目标更改为x86。它目前是任何CPU'。无论你是64位还是32位,你都可以这样做。请务必查看配置中的平台(Debug,Release,..)
答案 3 :(得分:0)
问题完全基于C ++项目的X86架构。您的WinForms项目引用“任何CPU”。
我已经附上了一张图片,告诉你在哪里更换它(它是用德语制作的,但你应该从屏幕上的位置找到它)。
编辑:
我刚刚看到Bounty问题是关于将所有内容设置为64位,以便实现简单地将C ++ dll的目标设置为x64架构。