【发布时间】:2014-12-21 13:05:34
【问题描述】:
这是我的第一个问题,是的,在这个网站上已经被问过很多次了。我之前已经查看了之前的每一个问题,要么答案不是他们的,要么我已经厌倦了看到它。
我几天来一直在尝试在 Visual Studios 2010 中实现 GTK+ 项目,但一直被 main.obj 困扰:错误 LNK2019:未解析的外部符号 _gtk_init_abi_check 在函数 _main 中引用(以及其他一些函数) .我尝试了多个版本 3.x(32b, and 64) 和 2.x(32b,64b) 但目前我正在尝试使用 GTK 与 2 32 位,因为它是最受支持的分支。我已经链接了头文件、库文件,并且有一个环境路径变量 = PATH=$(ProjectDir)GTK\bin。
当我运行 Verbose 时,我会搜索库。 *{full path} 是实际路径。 1> 搜索{完整路径}\GTK\lib\gtk-win32-2.0.lib: 等等所有的 GTK 库,所以我猜测 .dll 没有被发现。 然而,正在发现其他依赖项 找到_mainCRTStartup 1> 加载MSVCRTD.lib(crtexe.obj)
根据我的阅读,路径变量应该允许找到 .dll。我把 dll 扔到了我认为链接器可以看到的任何地方。在 .cpp 旁边的资源文件中,在调试文件夹中,没有任何效果。
我当前的代码是
#include <gtk\gtk.h>
int main (int argc, char *argv[]){
GtkWidget *window;
gtk_init (&argc, &argv);
/*
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello World");
gtk_widget_show (window);
gtk_main ();
*/
return 0;
}
为什么链接器找不到函数? 我还应该注意,我尝试通过命令行直接链接库以及 pragma 注释,但没有成功。它是 GTK 项目,所以二进制文件应该被很好地编程。此外,我已经按照上一个线程中的建议进行了多次编译。那么我在链接器环境方面缺少什么?我应该注意,这是我第一次为项目设置 dll,所以这可能是一个非常愚蠢的错误。
提前致谢!
【问题讨论】:
-
这是一个链接时问题,与缺少 DLL 无关。当您应该链接到调试版本(如果可用)时,您可能会链接到库的发布版本。
标签: c++ visual-studio-2010 dll gtk