Replies: 1 comment
-
根据提供的信息和相关讨论,您遇到的问题可能有以下几个原因和解决建议:
a) 临时解决方案(参考讨论中的方案): // 修改paddleocr.cpp中的代码,禁用检测步骤
std::vector<OCRPredictResult> PPOCR::ocr(cv::Mat img, bool det, bool rec, bool cls) {
std::vector<OCRPredictResult> ocr_result;
ocr_result.resize(1);
// ... 设置边界框
} 但这种方案有限制:只能处理单行文字,多行文字会报错。 b) 更好的解决方案:
// 在DLL入口点初始化
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// 初始化Paddle相关配置
break;
case DLL_PROCESS_DETACH:
// 清理资源
break;
}
return TRUE;
}
相关讨论链接:#13823 如果以上方案都不能解决问题,建议尝试将PaddleOCR的推理部分直接集成到exe中,而不是通过DLL调用,这样可以避免DLL调用带来的复杂性。 Response generated by feifei-bot | claude-3-5-sonnet-latest |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在C++中exe可以运行,但是dll不行,C#中调用就上面的情况
在C++中的接口定义和实现
`
__declspec(dllimport) char* Detect(char* imagefile);
__declspec(dllexport) void FreeMemory(char* ptr);
char* Detect(char* imagefile)
{
if (FLAGS_benchmark) {
ocr.reset_timer();
}
}
void FreeMemory(char* ptr)
{
delete[] ptr;
}
`
Beta Was this translation helpful? Give feedback.
All reactions