【问题标题】:Missing cyg*.dll when using libraries compiled with Cygwin, and errors when added使用用 Cygwin 编译的库时缺少 cyg*.dll,添加时出错
【发布时间】:2013-01-30 18:35:43
【问题描述】:

我刚刚用 Cygwin 编译了 zlib 和 libzip,以便在 Windows 中将它们与 Code::Blocks 一起使用。 我的代码是:

#include <iostream>
#include <zip.h>

int main()
{
    //Open the ZIP archive
    int err = 0;
    zip *z = zip_open("main.zip", 0, &err);
    zip_close(z);

    std::cout << "Hello world!" << std::endl;

    return 0;
}

当我构建我的代码时,它运行良好,没有错误和警告。

当我启动我的程序时,它说我没有 cygzip-2.dll。好的,我搜索它并将其放入我的可执行文件夹中。然后,它说我没有 cygwin1.dll。好吧,我也发了。 cygz.dll 和 cyggcc_s-1.dll 也是如此。

哦,它有效!但是,我的程序总是以相同的状态停止:-1073741819。 它甚至不告诉我你好:(

我用 MinGW 编译了它(它在 Cygwin 上也出现了同样的错误),我链接了 libz.a、libzip.a 和 libzip.dll.a。问题可能来自哪里?

谢谢!

编辑:当我尝试编译我的程序 IN Cygwin 时,它显示“未定义对 '_zip_open' 的引用”和“未定义对 '_zip_close' 的引用”。可能缺少一些东西,但是什么?

【问题讨论】:

  • 可能崩溃?您是否尝试过在调试器中运行?您是否检查过您实际上从zip_open 得到了一个有效的指针?
  • 是的,我没有尝试检查指针,但我会尽快检查。在调试器中运行是什么意思?使调试可执行文件?我是 C++ 的新手,我不知道所有这些函数。
  • 好的,我没有成功函数返回的内容,但是当我尝试编译我的程序 IN Cygwin 时,它显示“未定义对 '_zip_open' 的引用”和“未定义对“_zip_close”的引用。

标签: c++ dll cygwin mingw zlib


【解决方案1】:

最终,我成功使用了我的 2 个库!我已经尝试过使用 CMake,但惨遭失败。

所以今天,我决定用 GUI 重试它。首先,我编译了 zlib。我选择了 zlib 文件夹,并将 build 文件夹放入其中。我配置了 Code::Blocks 和 MinGW Makefiles 以及本机编译器的选项。然后,我在我的“build”文件夹中打开了 .cbp(Code::Blocks Project)并构建了它。

对于 libzip,除了指定 2 个变量之外,我执行了这些步骤:

ZLIB_INCLUDE_DIR = zlib 文件夹的根目录(其中包含所有 .h 和 .c)和 ZLIB_LIBRARY = [从 zlib 到构建文件夹的路径]\libzlib.dll

我也是从 .cbp 构建的。我将所有文件链接到我的项目,并且完成了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多