加载cygwin C ++ dll,调用类函数

时间:2016-04-15 13:27:09

标签: c++ visual-studio dll cygwin

我需要使用visual studio C ++或Code:block MinGW中的cygwin编译的dll。

我已经加载了cygwin1.dll和其他一些必需的dll,例如cyggcc_s-seh-1.dllcygstdc++-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中的其他类函数?

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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