我有一个用 C++ 编写的代码,它是一个 Windows 应用程序。
我想保留代码并创建另一个项目(C# 或 C++ - 而不是 C#)
这将“监听”该 Windows 应用程序中的某些函数调用。
我什至不知道从哪里开始,它只能是 dll 还是必须是可执行的,甚至是如何连接侦听器。
您可以在 WinAPI 的帮助下连接到另一个应用程序,因此您的程序不需要是 DLL,但是,我认为它不允许您监听对函数的调用等。您应该有某种原始过程中的“信号者”,您可以在挂钩时捕获它...
当您看到这种情况时,这也是合乎逻辑的:由于优化等原因,编译器有时会用它们的裸特化替换内联函数;从而完全去除分支。现在,在这种情况下,你怎么知道是否发生了分支,对吧?...
也许,您可能会改变设计模式,而不是挂钩——您可能会改变项目(当然,如果可以的话)并使它们成为两个进程相互传递消息。这可以使用 API 等来完成 - 这将使您的程序特定于操作系统 - 但这就像完全重写应用程序的某些部分(主要部分)一样。
在托管模式下编译您的 C++ 库,然后您可以将 .dll 用于您的 c# 项目。