Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在应用程序运行时编译.dll_C++_Dll - Fatal编程技术网

C++ 在应用程序运行时编译.dll

C++ 在应用程序运行时编译.dll,c++,dll,C++,Dll,假设此场景:一个应用程序(app.exe)正在使用多个.dll。我正在调试一个函数,bugged_function()来自应用程序使用的.dll之一:util.dll。当我调试有缺陷的函数()时,我意识到代码中有错误,必须进行更改 正常执行的步骤: 1.关闭app.exe 2.修改函数中的代码 3.重新编译util.dll 4.重新运行app.exe 我想要的是: 绕过步骤1和步骤4。为此,我需要以某种方式卸载,如果可能的话,util.dll库,以便在编译时可以重写它。应用程序必须以某种方式重新

假设此场景:一个应用程序(app.exe)正在使用多个.dll。我正在调试一个函数,bugged_function()来自应用程序使用的.dll之一:util.dll。当我调试有缺陷的函数()时,我意识到代码中有错误,必须进行更改

正常执行的步骤:

1.关闭app.exe

2.修改函数中的代码

3.重新编译util.dll

4.重新运行app.exe

我想要的是:

绕过步骤1和步骤4。为此,我需要以某种方式卸载,如果可能的话,util.dll库,以便在编译时可以重写它。应用程序必须以某种方式重新加载库

编辑1:

我不知道如何调用被窃听的函数()。假设我只能访问app.exe使用的库util.dll的源代码

编辑2:


我正在使用Visual Studio 2010,调试时,我会附加到app.exe进程。

Visual Studio可以编辑并继续。因此,如果处于断点,可以进行所需的更改,然后继续调试。Visual studio将在维护状态的同时编译并应用更改


编辑:修复了编辑并继续命名

Visual studio可以编辑并继续。因此,如果处于断点,可以进行所需的更改,然后继续调试。Visual studio将在维护状态的同时编译并应用更改


编辑:修复了编辑并继续命名

如果应用程序正在通过使用dll,则可以卸载它(
FreeLibrary
或类似),然后重新加载(
LoadLibrary
或类似)


如果应用程序正在通过使用dll,我认为你运气不好


编辑:我有点误读了这个问题。由于无法修改app.exe,因此必须依赖该应用程序的内置功能进行运行时加载和卸载(如果有)。这完全取决于应用程序。

如果应用程序通过使用dll,可以卸载它(
freebrary
或类似),然后重新加载(
LoadLibrary
或类似)


如果应用程序正在通过使用dll,我认为你运气不好


编辑:我有点误读了这个问题。由于无法修改app.exe,因此必须依赖该应用程序的内置功能进行运行时加载和卸载(如果有)。这完全取决于应用程序。

如何调用
bugged_function()
?通过
GetProcAddress()
?编辑:我不确定,因为我没有访问代码的权限。我将编辑问题以突出显示这一点。
bugged_function()
是如何调用的?通过
GetProcAddress()
?编辑:我不确定,因为我没有访问代码的权限。我将编辑问题以突出显示这一点。如果我在调试模式下修改代码,则表示需要重新编译。注意:我使用的是VisualStudio2010。它似乎有一些奇怪的限制,比如它可以应用什么以及需要重建什么。确保您正在使用/ZI选项@DanLincan:如果它这么说,那意味着您要么没有正确配置“编辑并继续”,要么您的链接器设置指定了错误的调试信息格式。用于配置“编辑并继续”的文档为。(还请注意,关于何时可以使用E&C,存在一些限制,例如存在任何
/clr
变体。)如果在调试模式下修改代码,则表示需要重新编译。注意:我使用的是VisualStudio2010。它似乎有一些奇怪的限制,比如它可以应用什么以及需要重建什么。确保您正在使用/ZI选项@DanLincan:如果它这么说,那意味着您要么没有正确配置“编辑并继续”,要么您的链接器设置指定了错误的调试信息格式。用于配置“编辑并继续”的文档为。(还请注意,关于何时可以使用E&C,存在一些限制,例如存在任何
/clr
变体。)