我想在windows上链接glfw。
在Linux上它是相当直接的:
dependency "derelict-glfw3" version="~>2.0.0"
subConfiguration "derelict-glfw3" "derelict-glfw3-static"
sourceFiles "deps/glfw/build/src/libglfw3.a" platform="posix"
libs"Xi" "pthread" "X11" "Xxf86vm" "Xrandr" "pthread" "GL" "GLU" "Xinerama" "Xcursor" platform="posix"
如果我尝试在Windows上链接.dll,配音告诉我Error: unrecognized file extension dll.
dependency "derelict-glfw3" version="~>2.0.0"
subConfiguration "derelict-glfw3" "derelict-glfw3-static"
sourceFiles "deps\\glfw\\build\\src\\Debug\\glfw3.dll" platform="windows"
如果我尝试与.lib
关联,则dub会告诉我COFF is not supported
。
dependency "derelict-glfw3" version="~>2.0.0"
subConfiguration "derelict-glfw3" "derelict-glfw3-static"
sourceFiles "deps\\glfw\\build\\src\\Debug\\glfw3.lib" platform="windows"
GLFW是使用vs2013构建的。我有什么不同的做法?
答案 0 :(得分:3)
这里有三种情况:
(大声笑我想在列表项中这个,但降价很糟糕。无论如何)
下载此内容以获取implib.exe:http://ftp.digitalmars.com/bup.zip
并使用它从.dll:implib /s yourdll.lib yourdll.dll
创建.lib并尝试链接新的lib。 (像你一直在做的那样把它添加到文件列表中)
如果它不起作用,请再次尝试该命令,但这次没有/s
开关。
它应该适用于那时。
-m32mscoff
32位版本。使用该标志到dmd,它将使用新的COFF格式而不是旧的omf格式输出32位程序。要使它工作,你的路径中的link.exe
必须是来自Visual Studio的Microsoft链接器,而不是默认的Digital Mars optlink.exe(令人困惑的是,直到最近才被称为link.exe
。很好,当它是微软的兼容替代品......二十年前......)。无论如何,如果您安装了Microsoft C ++编译器和链接器并将该link.exe放在路径中,那么dmd -m32mscoff
应该可以使用dll中的现有.lib
文件。
提示:如果您使用Windows安装程序进行dmd,请从开始菜单中打开“D2 64位命令提示符”以获取路径设置。它会告诉您使用-m64
,但您也可以使用该环境中的-m32mscoff
,它应该有效。如果一切安装得当。
-m64
64位版本。基本上与mscoff开关相同 - 你需要路径中的Visual C ++链接器 - 但是64位而不是32位。当然,这也需要一个64位的dll和lib。在评论中,听起来你可能也会遇到一些错误,我不知道,上面是其他一切正常工作。