有没有对 cython 和 C++非常熟悉的人。我有点问题要问。

2014-07-22 23:18:12 +08:00
 nooper
最近在写C++接口,只有头文件。和.so文件。没有源代码。
如何进行衔接。
还有有人有demo嘛。
对比了几个版本。cython写的程序。
C++的头文件的代码:
#ifdef LIB_MD_API_EXPORT
#define MD_API_EXPORT __declspec(dllexport)
#else
#define MD_API_EXPORT __declspec(dllimport)
#endif
class MD_API_EXPORT CThostFtdcMdApi
{ .....
}
类这 MD_API_EXPORT 宏定义能这么用嘛,什么意思。
C++完全不熟悉。谁能解释下。
5048 次点击
所在节点    程序员
8 条回复
nelson
2014-07-23 00:22:53 +08:00
__declspec(dllexport) Windows里表示导出符号,一般是编译so时候用的,__declspec(dllimport)是导入,在使用so里的function/class时用
shawngao
2014-07-23 08:51:06 +08:00
直接使用,完全可以忽略这些宏。 (因为你根本没定义LIB_MD_API_EXPORT)
xdeng
2014-07-23 09:05:28 +08:00
一般 编译dll 会定义一个宏 这个宏为真时 导出

使用者不定义的话 缺省为 导入
shyrock
2014-07-23 10:43:12 +08:00
没问题,就是声明导出类,这个类的方法和静态成员都被导出。
nooper
2014-07-23 12:09:09 +08:00
@shyrock 什么意思,class MD_API_EXPORT CThostFtdcMdApi 声明什么?
shyrock
2014-07-23 12:53:58 +08:00
@nooper 声明了CThostFtdcMdApi这个类的成员方法和静态数据成员都导出。可以被外部使用。
sinopec
2014-07-23 15:35:11 +08:00
dll 跟 so 混用?
nybux
2014-07-25 12:44:14 +08:00
自动化交易呀,你用so版本的话,不用看这几个宏,那是给vc用的
使用很简单,给你看一下我的代码

md_ = CThostFtdcMdApi::CreateFtdcMdApi();
md_->RegisterSpi(mdspi_);
md_->RegisterFront((char*)g_options["md_front"].as<std::string>().c_str());
md_->Init();

mdspi_是一个派生与CThostFtdcMdSpi的类的对象指针

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/124006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX