在过去的几个小时中,我试图在Windows上运行node-gd。我尝试了几个存储库,最后找到了https://github.com/mikesmullin/node-gd。当我跑步时

`npm install node-gd`

我收到以下错误:
node-gyp rebuild

...node_modules\node-gd>node "C:\Program Files\nodejs\node_modules\npm\
bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
  node-gd.cpp
..\cpp\node-gd.cpp(17): fatal error C1083: Cannot open include file: 'gd.h': No
 such file or directory [...\node_modules\node-gd\build\node_gd.vcxproj
]

我以为应该安装gd lib,但是当我用google搜索它时,几乎所有信息都是关于php_gd而不是关于lib本身的。

我应该把gd文件放在哪里?

编辑:我编译了!现在我得到:

最佳答案

我最近经历了这个过程,遇到了同样的问题,但是找不到解决问题的任何已发布步骤。我知道该线程现在已有1.5年的历史了,但是我将在此处发布完整的安装步骤,以期有可能对其他人有所帮助。

假设您已经建立了GD库(https://github.com/libgd/libgd/releases),并且将使用GD DLL。

  • https://www.npmjs.com/package/node-gd下载node-gd软件包

    注意:不要从提示符处运行“npm install node-gd”,因为这将自动下载并运行安装。您需要先对该软件包进行一些本地更改,然后再在本地安装。
  • 解压缩后,打开binding.gyp文件,例如位于(downloads_folder)\ node-gd \ binding.gyp
  • 更改此行:
    "libraries": ["-lgd"],
    

    到已编译的GD DLL导入库的名称,例如对于“libgd.lib”:
    "libraries": ["-llibgd"],
    
  • 将GD源路径添加到“include_dirs”,例如:
    "include_dirs": [
      "<!(node -e \"require('nan')\")",
      "(path_to_gd)/src" # <-- THIS ENTRY
    ],
    
  • 将GD编译的库目录添加到Windows的“条件”字段下的VS链接器设置中,例如:

    注意:由于某些原因,我无法通过gyp的常规绑定(bind)规范使库目录正常工作,因此我不得不求助于此。
    "conditions": [
      [ "OS=='freebsd'", {
        "libraries": ["-L/usr/local/lib"],
        "include_dirs": ["/usr/local/include"]
      }],
      [ "OS=='mac'", {
        "libraries": ["-L/usr/local/lib", "-L/opt/local/lib"],
        "include_dirs": ["/usr/local/include", "/opt/local/include"]
      }],
      [ "OS=='win'", { # <-- THIS ENTRY
        "msvs_settings": {
          "VCLinkerTool": {
            "AdditionalOptions": ["/LIBPATH:(path_to_gd)/build_msvc12_x64"],
          },
        },
      }],
    ]
    
  • 保存binding.gyp文件,然后在本地安装该软件包,例如:
    npm install (downloads_folder)\node-gd
    
  • 如果此时(通过要求)尝试使用node-gd,则会收到OP超出上述“找不到模块”错误。问题不在于找不到模块,而是在于找不到GD DLL(错误消息很糟糕)。因此,将GD .dll文件复制到node-gd输出目录(它必须位于刚刚构建的node-gd二进制文件旁边),例如:
    copy (path_to_gd)\build_msvc12_x64\libgd.dll (path_to_node_modules)\node-gd\build\Release\libgd.dll
    
  • 应该就是这样!希望此时一切正常。
  • 关于c++ - 在Windows上安装Node-gd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21893642/

    10-11 18:18