【发布时间】:2012-10-22 04:18:31
【问题描述】:
我有一个最初使用 Visual Studio 2003 创建的 Win Forms C++ 解决方案,转换为 2008(成功),现在我正尝试将其转换为 Visual Studio 2010。
解决方案构建时没有错误,然后在运行时尝试从表单资源加载图像列表时出现缺少清单异常。异常发生在以下代码行:
this->m_imageList->ImageStream = (__try_cast<System::Windows::Forms::ImageListStreamer * >(resources->GetObject(S"m_imageList.ImageStream")));
我想我发现了问题,如果我使用 2008 程序集的 ildasm 检查清单,我会看到以下表格资源:
.mresource public SDTP.SDTPDataMonitorForm.resources
{
// Offset: 0x00000000 Length: 0x00006DB0
}
2010 程序集的清单如下所示:
.mresource public SDTPnet.SDTPDataMonitorForm.resources
{
// Offset: 0x00000000 Length: 0x00004F57
}
.mresource public '..\\temp\\Debug\\SDTP.SDTPDataMonitorForm.resources' as '..$temp$Debug$SDTP.SDTPDataMonitorForm.resources'
{
// Offset: 0x00008E80 Length: 0x00004F57
}
我确定它找不到它,因为第一个实例中有额外的“net”文本,而第二个实例中有额外的 ..$temp$Debug。
最后,我的问题是:我应该在项目设置中的哪个位置解决这个问题? ..\temp\Debug 是项目路径的一部分......如果我将“中间目录”设置更改为 $(Configuration) 我现在得到:
.mresource public 'Debug\\SDTP.SDTPDataMonitorForm.resources' as Debug$SDTP.SDTPDataMonitorForm.resources
{
// Offset: 0x00008E80 Length: 0x00004F57
}
在仍然产生异常的清单文件中。
感谢您的帮助...
【问题讨论】:
-
想通了:右键单击 .resx 文件并选择属性并编辑“资源逻辑名称”
标签: visual-studio-2010 visual-c++ unmanagedresources