码迷,mamicode.com
首页 > 编程语言 > 详细

天坑!c++调用python,遭遇R6034问题

时间:2019-03-07 16:08:20      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:mod   svc   strong   其他   nload   core   image   debug   msvc   

起源:

AllMyTube下载核心,是c#组件调用c++dll,在dll中初始化Python运行环境。在工作目录有msvcr90.dll文件时,程序运行会弹出如下错误:

技术图片

R6034。

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Runtime Error!

Program: E:\...

R6034

An application has made an attempt to load the C runtime library incorrectly.
Please contact the applications support team for more information.


---------------------------
确定   
---------------------------

 

之所以与msvcr90.dll有关,是在测试中加减关联dll发现,未及原理,发布时不带msvcr90.dll

以为解决问题,其实掩耳盗铃。

因为忘记验证,在环境变量任一路径下有msvcr90.dll,亦会弹此错误。

谷歌之,大抵是改此文件名或删除,与我发现类似,未有彻底解决方法。我们不能删除用户机子上环境变量路径中此文件,办不到。

箭在弦上,不得不发,重拾c++,单步追之……

 

一、可疑的_AES.pyd

技术图片

留意编译信息,发现加载_AES.pyd组件时,有加载python27.dllmsvcr90.dll行为,会不会它搞的鬼?

单步跟之,异常信息如图:

技术图片

托管调试助手“LoaderLock”在“E:\Apps\DownloadCore\VideoDownloader_v3\win\bin\Debug\Demo.exe”中检测到故障。
其他信息: 正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

且其为反复触发:

技术图片

代码中我找到了调用位置,加try...catch(...)屏蔽,无效:

    try{
        pyModule = PyImport_ExecCodeModule("WondershareDownloader", pyScript);
    }
    catch(...){
    }

怎么办……

 

我们应用之python3环境,它却依然去找python27.dll,不该。

Copy python27.dll至运行目录,亦无效;改_AES.pyd名,可以,不再弹异常框。

就它丫的鬼!但cookies解密需用此库,如之奈何?

 

天坑!c++调用python,遭遇R6034问题

标签:mod   svc   strong   其他   nload   core   image   debug   msvc   

原文地址:https://www.cnblogs.com/crwy/p/10489817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!