jjzjj

windows - lnk1104 : cannot open file 'libpng.lib' , 但 'libpng.lib' 是输出,不是输入

coder 2024-06-13 原文

我正在尝试将 libpng-1.16.6 构建为 VS 2010 的静态库。我想我已经排除了 makefile 语法问题、文件系统权限和不正确的 LIB/LIBPATH 环境变量。 makefile 是未更改的 makefile.vcwin32 随 lpng1616 一起交付。我确定问题是环境问题,但我不知道它是什么。我正在寻找新的想法! TIA 寻求任何帮助。

相关事实:

  1. 总体模式与我用于构建 geos、gdal 和 wxWidgets 开源项目的模式相同:Visual Studio 生成文件项目调用 Windows 命令文件。 Windows 命令文件执行任何所需的预处理,调用 vcvarsall.bar 来设置 VS 构建环境,调用 nmake,并执行任何所需的后处理。命令文件在很大程度上是相同的,但针对每个项目进行了自定义。每种情况下的 makefile 都是与源代码一起提供的。成功重新测试我的 wxWidgets 构建证明我的计算机上没有环境变化导致 libpng 失败。
  2. 感兴趣的日志输出是: lib-nologo-out:libpng.lib png.obj pngerror.obj pngget.obj pngmem.obj pngpread.obj pngread.obj pngrio.obj pngrtran.obj pngrutil.obj pngset.obj pngtrans.obj pngwio.obj pngwrite.obj pngwtran. obj pngwutil.obj LINK: fatal error LNK1104:无法打开文件“libpng.lib” NMAKE: fatal error U1077:'"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\lib.EXE"':返回代码'0x450'
  3. 日志输出说明:要求 Lib.exe 从目标文件列表中生成 libpng.lib。错误是无法打开输出文件。此时,在执行 makefile 时,所有目标文件都已生成,我已确认存在这些文件。该库将被写入与目标文件相同的目录中。
  4. 由于编译器能够写入目标文件,因此在此目录中不存在写入权限问题。
  5. 启动 VS 命令提示符窗口,导航到此路径并执行 makefile 正在成功执行的相同“lib”命令行。因此不可能有命令行语法错误。从同一 VS 命令提示符运行 Windows 命令文件中的 nmake 也成功。
  6. 在执行 makefile 后立即将“lib”命令行添加到 Windows 命令文件会导致与从 makefile 运行时相同的错误。
  7. 自然而然的结论是,问题在于 lib.exe 的执行环境。
  8. Google 结果,搜索“lib”、“link”、“lnk1104”、“0x450”、“nmake”、“makefile”、“makefile.vcwin32”、“在命令行中工作,而不是在 makefile 中工作”的组合等,揭示了几种模式。正如人们所预料的那样,最常见的问题是其中一个输入文件丢失或无效。 (参见上面的 3、4、5 和 6。)我没有注意到错误消息中引用的文件实际上是输出文件而不是输入文件的情况。另一个常见问题是 LIB 或 LIBPATH 环境变量有问题。 (我检查了这些,将 VS 命令提示值与我的工作流程中的值进行了比较。)
  9. 我发现显然 lib.exe 将其输出写入默认输出名称并重命名为“-out”选项请求的名称。如果 makefile 被更改为构建“tmplibpng.lib”而不是“libpng.lib”,则会生成相同的错误消息。

最佳答案

我以为我很安全。在编写 Windows 命令文件时,我为所有“内部”环境变量添加前缀和后缀,以避免冲突,例如“LIB”。显然 'LIB' 正在被 lib.exe 使用,尽管它不在 Microsoft 发布的列表中。重命名此环境变量解决了我的问题。

关于windows - lnk1104 : cannot open file 'libpng.lib' , 但 'libpng.lib' 是输出,不是输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28098007/

有关windows - lnk1104 : cannot open file 'libpng.lib' , 但 'libpng.lib' 是输出,不是输入的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  5. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  6. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  9. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  10. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

随机推荐