gpt4 book ai didi

c++ - Node 插件 (OSX) 中的 GraphicsMagick 代码卡住

转载 作者:行者123 更新时间:2023-11-28 08:04:31 26 4
gpt4 key购买 nike

我正在尝试将这个简单的 GraphicsMagick 示例作为 Node 绑定(bind)/插件。此代码在带有 GraphicsMagick 1.3.15 的 OSX 10.6.7 中按预期工作

#include <Magick++.h>
#include <iostream>
using namespace std;

int main(int argc,char **argv)
{
Magick::InitializeMagick(0);
Magick::Image image;

try {
image.read( "snow.jpg" );
image.scale("320");
image.write( "snow-scaled.jpg" );
}
catch( Magick::Exception &error_ ) {
cout << "Caught exception: " << error_.what() << endl;
return 1;
}
cout << "Image scaled!" << endl;
return 0;
}

Compiling:
g++ scale.cpp `GraphicsMagick++-config --cppflags --cxxflags --ldflags --libs`

Running:
./a.out
Image scaled!

但是将此代码设为 Node 绑定(bind) (0.6.14) 只会卡住 ( see full gist ):

void AsyncWork(uv_work_t* req) {
std::cout << "AsyncWork..." << std::endl;
Baton* baton = static_cast<Baton*>(req->data);
baton->result = 12345; // Just a test

Magick::Image image; // <--- Freezes here!
image.read("snow.jpg");
std::cout << "Scaling..." << std::endl;
image.scale("200");
std::cout << "Done!" << std::endl;
image.write("snow-scaled.jpg");
// and baton->error to true.
}

从 javascript 调用它时的输出:

AsyncWork...

有什么问题吗?附带说明一下,这实际上在 Ubuntu 下编译/运行时有效!

最佳答案

您是否尝试过在 AsyncWork 中使用 Magick::InitializeMagick(0); 进行初始化?异步函数在池线程上运行。

你总是可以将完成的 GM 插件 git here .

关于c++ - Node 插件 (OSX) 中的 GraphicsMagick 代码卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com