最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
地址:https://www.swig.org/download.html
3.安装 Python 或者 Anaconda
Windows 系统下封装
1.解压 v6.7.0_traderapi_20230209.zip 文件(我这里是使用的x64版本)
cd v6.7.2_traderapi_20230913\v6.7.2_20230913_winApi\traderapi\20230913_traderapi64_se_windows
2.新建 thosttraderapi.i 文件,内容如下:
%module(directors="1") thosttraderapi
%{
#include "ThostFtdcTraderApi.h"
#include <codecvt>
#include <locale>
#include <vector>
#include <string>
using namespace std;
#ifdef \_MSC\_VER
const static locale g\_loc("zh-CN");
#else
const static locale g\_loc("zh\_CN.GB18030");
#endif
%}
%typemap(out) char[ANY], char[] {
const std::string &gb2312($1);
std::vector<wchar\_t> wstr(gb2312.size());
wchar\_t\* wstrEnd = nullptr;
const char\* gbEnd = nullptr;
mbstate\_t state = {};
int res = use_facet<codecvt<wchar\_t, char, mbstate\_t> >
(g_loc).in(state,
gb2312.data(), gb2312.data() + gb2312.size(), gbEnd,
wstr.data(), wstr.data() + wstr.size(), wstrEnd);
if (codecvt_base::ok == res)
{
wstring_convert<codecvt_utf8<wchar\_t>> cutf8;
std::string result = cutf8.to\_bytes(wstring(wstr.data(), wstrEnd));
resultobj = SWIG\_FromCharPtrAndSize(result.c\_str(), result.size());
}
else
{
std::string result;
resultobj = SWIG\_FromCharPtrAndSize(result.c\_str(), result.size());
}
}
%feature("director") CThostFtdcTraderSpi;
%ignore THOST_FTDC_VTC_BankBankToFuture;
%ignore THOST_FTDC_VTC_BankFutureToBank;
%ignore THOST_FTDC_VTC_FutureBankToFuture;
%ignore THOST_FTDC_VTC_FutureFutureToBank;
%ignore THOST_FTDC_FTC_BankLaunchBankToBroker;
%ignore THOST_FTDC_FTC_BrokerLaunchBankToBroker;
%ignore THOST_FTDC_FTC_BankLaunchBrokerToBank;
%ignore THOST_FTDC_FTC_BrokerLaunchBrokerToBank;
%feature("director") CThostFtdcTraderSpi;
%include "ThostFtdcUserApiDataType.h"
%include "ThostFtdcUserApiStruct.h"
%include "ThostFtdcTraderApi.h
3.新建 thostmduserapi.i 文件,内容如下:
%module(directors="1") thostmduserapi
%{
#include "ThostFtdcMdApi.h"
#include <codecvt>
#include <locale>
#include <vector>
#include <string>
using namespace std;
#ifdef \_MSC\_VER
const static locale g\_loc("zh-CN");
#else
const static locale g\_loc("zh\_CN.GB18030");
#endif
%}
%typemap(out) char[ANY], char[] {
const std::string &gb2312($1);
std::vector<wchar\_t> wstr(gb2312.size());
wchar\_t\* wstrEnd = nullptr;
const char\* gbEnd = nullptr;
mbstate\_t state = {};
int res = use_facet<codecvt<wchar\_t, char, mbstate\_t> >
(g_loc).in(state,
gb2312.data(), gb2312.data() + gb2312.size(), gbEnd,
wstr.data(), wstr.data() + wstr.size(), wstrEnd);
if (codecvt_base::ok == res)
{
wstring_convert<codecvt_utf8<wchar\_t>> cutf8;
std::string result = cutf8.to\_bytes(wstring(wstr.data(), wstrEnd));
resultobj = SWIG\_FromCharPtrAndSize(result.c\_str(), result.size());
}
else
{
std::string result;
resultobj = SWIG\_FromCharPtrAndSize(result.c\_str(), result.size());
}
}
%typemap(in) char \*[] {
/\* Check if is a list \*/
if (PyList\_Check($input)) {
int size = PyList\_Size($input);
int i = 0;
$1 = (char \*\*) malloc((size+1)\*sizeof(char \*));
for (i = 0; i < size; i++) {
PyObject \*o = PyList\_GetItem($input, i);
if (PyString\_Check(o)) {
$1[i] = PyString\_AsString(PyList\_GetItem($input, i));
} else {
free($1);
PyErr\_SetString(PyExc_TypeError, "list must contain strings");
SWIG_fail;
}
}
$1[i] = 0;
} else {
PyErr\_SetString(PyExc_TypeError, "not a list");
SWIG_fail;
}
}
// This cleans up the char \*\* array we malloc'd before the function call
%typemap(freearg) char \*\* {
free((char \*) $1);
}
%feature("director") CThostFtdcMdSpi;
%ignore THOST_FTDC_VTC_BankBankToFuture;
%ignore THOST_FTDC_VTC_BankFutureToBank;
%ignore THOST_FTDC_VTC_FutureBankToFuture;
%ignore THOST_FTDC_VTC_FutureFutureToBank;
%ignore THOST_FTDC_FTC_BankLaunchBankToBroker;
%ignore THOST_FTDC_FTC_BrokerLaunchBankToBroker;
%ignore THOST_FTDC_FTC_BankLaunchBrokerToBank;
%ignore THOST_FTDC_FTC_BrokerLaunchBrokerToBank;
%include "ThostFtdcUserApiDataType.h"
%include "ThostFtdcUserApiStruct.h"
%include "ThostFtdcMdApi.h"
4.cmd 进入该路径,分别运行以下命令:
swig -threads -py3 -c++ -python thosttraderapi.i
swig -threads -py3 -c++ -python thostmduserapi.i
5.此时会新增以下文件:
6.新建两个vs动态库项目 _thosttraderapi 和 _thostmduserapi(项目最后会打包提供),每个项目添加如下文件,我本地安装的是Visual Studio 2022:
7.两个项目都需要将python安装路径的头文件和lib库文件路径添加上,我本地安装的是Anaconda3:
附加包含目录:D:\software\Anaconda3\include;
附加库目录:D:\software\Anaconda3\libs;
附加项(_thostmduserapi项目):python37.lib;thostmduserapi_se.lib;
附加项(_thosttraderapi项目):python37.lib;thosttraderapi_se.lib;
8.编译两个项目,会生成 _thosttraderapi.dll 和 _thostmduserapi.dll 两个动态库,分别复制一份,将.dll改成.pyd
9.以下6个文件,就是我们最终封装好的Python版CTP-API(最后会打包提供)
Linux 系统下封装
1.解压 v6.7.0_traderapi_20230209.zip 文件,进入 v6.7.0_20230209_api_traderapi_se_linux64 目录
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!