#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
我尝试把各种版本的MSVCR80.dll
在与生成的可执行文件相同的目录下(通过cmake
),但没有一个匹配。
对于这种问题有通用的解决方案吗?
UPDATE
有些答案建议安装VS redist,但我不确定它是否会影响我安装的Visual Studio 9,有人可以确认吗?
可执行文件的清单文件
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
清单文件似乎说它应该使用MSVCR90
,为什么总是报失踪MSVCR80.dll
?
FOUND
经过几个小时的研究,最后我发现这是由这个设置引起的PATH
:
D:\MATLAB\R2007b\bin\win32
删除后一切正常。但是为什么该设置会影响我正在运行的可执行文件使用msvcr90 to msvcr80 ???
回答主题问题,即使 gtk 应用程序也需要 Microsoft 库,因为它不会尝试模拟 Windows 小部件的外观和行为。相反,gtk 使用本机 API 来绘制小部件。即使您使用 MinGW 编译器进行编译,您的程序仍然需要 MSVCR。
尝试查看 makefile 以了解为什么 cmake 无法正确链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)