【问题标题】:Load cygwin C++ dll, call class functions加载cygwin C++ dll,调用类函数
【发布时间】:2016-04-16 01:23:28
【问题描述】:

我需要使用来自 Visual Studio C++ 或 Code:blocks MinGW 的 cygwin 编译的 dll。

我已经加载了 cygwin1.dll 和一些其他的 dll,这是必需的,例如 cyggcc_s-seh-1.dll、cygstdc++-6.dll 等。我的 dll 加载正常 我可以通过GetProcAddress 函数获取任何函数指针,但我的问题是

我的 dll 是带有许多类的 c++ dll。 我已经包含了必要的标题但是(我怎么能猜出哪个函数是谁) 我有不同的调用约定

000000051a5ae590 T _ZN6eq_res8is_breakEv
000000051a5ae810 T _ZN6eq_res8is_emptyEP5EqAdr
000000051a5ae700 T _ZN6eq_res8is_localEP5EqAdr
000000051a5b00c0 T _ZN6eq_res8monitorsEv
000000051a5af4e0 T _ZN6eq_res8req_cardEi
000000051a5af560 T _ZN6eq_res8ret_cardEv
000000051a5ae540 T _ZN6eq_res8set_exitEv
000000051a5ae9d0 T _ZN6eq_res9check_refEP6eq_svr 
...

如何在 Visual c++ 中更改加载的 dll 或项目的函数调用约定? 或者,如何声明对象调用构造函数、对象的析构函数并使用 dll 中的其他类函数?

谢谢。

【问题讨论】:

    标签: c++ visual-studio dll cygwin


    【解决方案1】:

    Visual Stusio 和 Cygwin 的混合意味着寻找麻烦。 这里给出了一些提示

    https://cygwin.com/faq.html#faq.programming.msvs-mingw

    但请记住,这两个世界使用不同的约定,对于 64 位也使用不同的类型大小。

    https://cygwin.com/faq.html#faq.programming.64bitporting

    【讨论】:

    • 感谢我的 cygwin dll 是 64 位的,也许是麻烦,但不幸的是我已经开始并且必须完成,我想我可以通过宏克服类型,还有一件事,我无法工作printf 或 cout 与终端一起使用的函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多