none
ocx控件注册调用问题 RRS feed

  • 问题

  • 我编写一个ocx控件 这个控件名称为1.ocx  这个1.ocx通过静态方式加载了一个a.dll的模块,而a.dll的模块通过loadlibrary的方式加载了b.dll模块 

    1.ocx和a.dll和b.dll 都在同一目录下

    然后我创建了一个应用程序 这个应用程序与ocx不在同一目录下,通过加载ocx后关联调用1.ocx公开的方法。调试跟踪,发现a.dll 在loadlibrary b.dll的时候报错 错误码126...

    如果应用程序和ocx在一个目录下就没问题,或者不通过loadlibrary 静态加载b.dll 也没问题

    请问如何解决通过Loadlibrary加载dll导致找不到模块的这个问题? 


    …|▌'寔堅蔃の/「≯還寔╪.逞蔃﹖

    2014年8月20日 7:05

答案

  • 你好,

    1.ocx和a.dll和b.dll 都在同一目录下

    然后我创建了一个应用程序 这个应用程序与ocx不在同一目录下,通过加载ocx后关联调用1.ocx公开的方法。调试跟踪,发现a.dll 在loadlibrary b.dll的时候报错 错误码126...

    如果应用程序和ocx在一个目录下就没问题,或者不通过loadlibrary 静态加载b.dll 也没问题

    根据你的描述,当你的应用程序和ocx 不在同一目录下的时候,loadlibrary b.dll时报错,但是都放同一目录下就没问题,静态加载b.dll 也没问题。通过这些现象,应该是动态加载b.dll 的时候没有明确的路径去加载。你可以尝试用 #pragma comment(lib, "YOUR_PATH\YOUR_LIB.lib") 设置明确的完整的b.dll 的加载路径试试。或者在当前应用程序项目设置中,设置好library 的路径。

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年8月21日 2:43