#include #include #include #define DECLARE extern "C" __declspec(dllexport) DECLARE void *wcocr_init(const wchar_t *wexe, const wchar_t *wwcdir) { auto obj = new CWeChatOCR(wexe, wwcdir); if (obj->wait_connection(5000)) { return obj; } else { delete obj; return nullptr; } } DECLARE void wcocr_destroy(void *pobj) { if (!pobj) return; auto obj = reinterpret_cast(pobj); delete obj; } DECLARE void wcocr_free_str(char *ptr) { delete[] ptr; } DECLARE char *wcocr_ocr(void *pobj, const char *u8path) { if (!pobj) return 0; auto obj = reinterpret_cast(pobj); CWeChatOCR::result_t res; std::string imgpath = u8path; if (!obj->doOCR(imgpath, &res)) return 0; std::vector rets; std::vector xs, ys, xs2, ys2; nlohmann::json js = std::vector{}; for (auto &blk : res.ocr_response) { js.push_back({blk.left, blk.top, blk.right, blk.bottom, blk.text}); } std::string _s = js.dump(); auto s = new char[_s.size() + 1]; strcpy(s, _s.c_str()); return s; }