4

这让我大吃一惊。我只是想将pdcurses(即 Windows 的 ncurses)包含到测试程序中。联动虽然失败了。

使用 Visual Studio 2010。

我完全知道设置正确的链接附加库路径并列出库本身。没有喜悦。

我已经尝试了 pdcurses 网站上的各种预构建。没有这样的运气。

我当然求助于从源头构建。按照规定从 Visual Studio 命令提示符使用 nmake。建好了。纳达在链接上。

我错过了什么。星期五可能太晚了...

下面的输出:

1>------ Build started: Project: test, Configuration: Debug x64 ------
1>Build started 14/12/2012 16:24:32.
1>InitializeBuildStatus:
1>  Touching "x64\Debug\test.unsuccessfulbuild".
1>ClCompile:
1>  main.c
1>C:\dep\pdcurses\curses.h(160): warning C4005: 'MOUSE_MOVED' : macro redefinition
1>          C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wincon.h(101) : see previous definition of 'MOUSE_MOVED'
1>main.c(73): warning C4133: 'function' : incompatible types - from 'unsigned short [20]' to 'const char *'
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>main.obj : error LNK2019: unresolved external symbol endwin referenced in function main
1>main.obj : error LNK2019: unresolved external symbol wgetch referenced in function main
1>main.obj : error LNK2001: unresolved external symbol __imp_stdscr
1>main.obj : error LNK2019: unresolved external symbol refresh referenced in function main
1>main.obj : error LNK2019: unresolved external symbol printw referenced in function main
1>main.obj : error LNK2019: unresolved external symbol initscr referenced in function main
1>C:\proj\test.exe : fatal error LNK1120: 6 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.47
4

1 回答 1

5

行。我觉得比较傻。这是后代的解决方案...

分布式 pdcurses 二进制文件是32bit。我试图为64bit构建。

从根本上说,我忘记了连接的第一条规则:不要混合和匹配架构。

更具体地说,当尝试从源代码构建时:

1) 小心启动错误的 Visual Studio 命令提示符。“工具”菜单中的默认选项是 x86 选项。如果您只是尝试运行 cl.exe,您会发现这一点。

相反,从开始菜单运行提示:Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio x64 Win64 Command Prompt (2010)

调用构建然后通过 cd'ing 到 pdcurses 目录/win32a 并键入:

nmake -f vcwin32.mak DLL=pdcurses.dll

此外,2) 在编译 pdcurse 之前更改 pdcurses Windows makefile (vcwin32.mak) 的第 111 行:

cvtres /MACHINE:X64 /NOLOGO /OUT:pdcurses.obj pdcurses.res

(注意:即 X64 架构!)

现在一切都是一致的。将构建 pdcurses 库。它将与我在 x64 上构建的测试应用程序链接(如原始输出所示)。

于 2012-12-14T17:39:33.223 回答