是否有可能在WX GUI应用程序中调试嵌套的dll?

问题描述 投票:0回答:1

该代码涉及将使用情况监视dll集成到现有主机dll。主机dll由WX GUI应用程序加载以进行回调。使用情况监视dll的工作原理如下。

初始化// f1

usageexportfrequency // f2

将使用情况信号导出到服务器// f3

deinit // f4

f1已集成到我的主机dll初始化例程中,f2已集成到主机dll中基于事件的函数中,并且同样已初始化为我的主机dll deinit。

当我仅集成f1和f3时,gui不会崩溃并且可以正常工作。当我将主要的f2功能集成到主机dll中并指示使用回调函数并运行GUI应用程序时,当我更改窗口小部件值时立即崩溃。

但是,当我在示例程序(EXE不是主机dll)中使用“使用” dll时,它的工作原理就像一个超级按钮。

'''提示hGetProcIDDLL;

typedef void(__stdcall * lgUsgIn)(bool);

typedef void(__stdcall * SetMinInt)(long);

typedef bool(__stdcall lgUsgSnd)(const char,const char *,const char *);

typedef void(__ stdcall * waitforCom)(void);

lgUsgIn LogUsageInit;

lgUsgSnd LogUsageSend;

SetMinInt SetMinInterval;

waitforCom WaitForCompletion;

hGetProcIDDLL = LoadLibrary(“ D:\ HTA_NG_DevEnvironment \ Utilization \ LogUsage.dll”);

LogUsageInit =(lgUsgIn)GetProcAddress(hGetProcIDDLL,“ LogUsageInit”);

SetMinInterval =(SetMinInt)GetProcAddress(hGetProcIDDLL,“ SetMinInterval”);

LogUsageSend =(lgUsgSnd)GetProcAddress(hGetProcIDDLL,“ LogUsageSend”);

WaitForCompletion =(waitforCom)GetProcAddress(hGetProcIDDLL,“ WaitForCompletion”);

LogUsageInit(1);

SetMinInterval(600);

const char tool [] =“ tooln1”;

const char opt [] =“ remoteValidation”;

const char tag [] =“ none”;

bool OutCome = LogUsageSend(tool,opt,tag); // 包含此功能时发生崩溃

WaitForCompletion();

FreeLibrary(hGetProcIDDLL);

'''

用于将主机Dll加载到WX GUI应用程序的功能也是来自wxDynamicLibrary类的Load()函数。

c++ dll wxwidgets
1个回答
0
投票

使用Visual Studio(假设您具有dll pdb文件(符号)),可以附加到任何进程(例如GUI应用程序)并调试其中的一部分(例如dll部分)。如果在[C0 ],您应该可以进入它。

© www.soinside.com 2019 - 2024. All rights reserved.