草庐IT

c++ - 如何在执行期间停止 C++ 应用程序以调试到 dll?

我有一个我没有代码的应用程序和一个我有代码的dll。我需要能够调试到dll,但缺少exe的源代码,我该怎么做?dll代码为mfcc++;我相信主应用程序也是一样。我试过做一个“设置目标应用程序”的交易,我在其中设置将从中调用dll的应用程序,当以这种方式调用时,应用程序崩溃了,非常可怕。我不知道问题出在这个dll上还是出在该行为的可执行文件上,这只是我想解决的无数问题之一。我在想,应该有一些调用允许dll无限期地旋转,直到调试器附加到进程,此时我应该能够通过附加到进程来调试dll。那有意义吗?有更好的方法吗? 最佳答案 我曾经使用D

c# - 如何查看 c++ 和 c# dll 依赖项?

我有一个python项目,它调用一个c++包装器dll,该dll调用一个c#cominteropdll。在我的电脑上,安装了所有的框架和程序,我的项目运行得很好。但在刚刚格式化的计算机中却没有。我已经安装了c++2008redistribute并且c++部分正在工作,但是当我从它调用一个函数时(将调用c#通讯器),它给出了一个错误。我想知道c++和c#dll的dll依赖项是什么,看看缺少什么:) 最佳答案 看起来你需要DependencyWalker. 关于c#-如何查看c++和c#dl

c# - C++ dll 和 C# 调用

我有一个用C++编写的调用COM接口(interface)函数的函数它的签名:BOOLfunc(LPWSTRstrIn,__outLPWSTRstrOut){//initcom//dosomething//releasepointers}在C#中:[DllImport("funcdll.dll")]staticexternboolfunc(StringstrIn,refStringstrOut);//useitfor(inti=0;i我已经在C++控制台应用程序中测试了我的dll,它工作正常,但在C#中它崩溃并出现未知错误。 最佳答案

c# - 调用从 c# 返回 char* 的 c++ dll 函数。不能使用 DllImport()

我有一个带有2个函数的c++dllconstchar*getVersionText1(void);voidgetVersionText2(constchar**res);这两个函数都返回一个描述产品版本的字符串。第一个函数将其作为constchar*返回(这意味着它在内部分配和处理定位它),第二个函数获取指向char*的指针并将其设置为指向描述版本的char*。我想从C#调用这些函数并显示文本。我不能使用[dllimport...]风格,因为函数调用的顺序很重要。我首先调用构造函数而不是getVersion,最后调用析构函数。所以dll必须先加载到内存中。您能否发布打印这两个函数文本的

C# DLLImport for C++ dll

我有一个用C++/CLI和.NET构建的.dll。因此,它针对.NET应用程序。API是一组使用托管类型的包装器,因此它是NET原生的。我导入了.dll并添加了如下函数:[DllImport(@"maplib.dll")]publicstaticexternboolinitialize(stringa);当我在我的C#代码中调用这个函数时,它工作正常,但如果我想添加另一个函数,比如..[DllImport(@"maplib.dll")]publicstaticexternboolinitialize(stringa);publicstaticexternboolrunfile(stri

c++ - Windows 上 Mingw 的 DLL 依赖项

我正在开发一个程序,该程序使用autotools作为其构建系统并在Linux上编译良好。为了为windows构建,我试图让mingw交叉编译器为windows工作。现在,当我在linux上编译并移动到windows时,我当然会丢失一些默认情况下未安装在windows上的dll。这会导致缺少dll错误。由于LGPL的限制,我无法静态链接我的程序。所以我的问题是在这种情况下交叉编译的正确方法是什么?我觉得我需要将我的exe包装在一个安装程序中,该安装程序会自动解析并安装Windows的dll依赖项,但我无法找到解释如何执行此操作的内容。基本上我在考虑yum/apt-getforwindow

c++ - Visual C++ 2010 : deterministic build? 如何区分 exe/dll 文件?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:DeterministicbuildsunderWindowscomparingproductsofbuildsinreleaseVisualStudio2010C++构建是否具有确定性?也就是说,在给定等效源代码输入和相同编译/链接设置的情况下,它是否始终会生成相同的二进制指令?我知道可能有各种日期戳和其他编译系统相关的字段被写入二进制EXE或DLL文件。所以我的问题的第二部分是:当diff此类文件时,如何忽略这些“可变”元素?我正在尝试创建一个工具来比较来自不同构建迭代的二进制工件,并告诉我它们在功能上

c++ - 我可以将 DLL 注入(inject) JVM 并获取 JNIEnv 吗?

我希望能够将.dll注入(inject)到正在运行的JVM进程中。我想知道的是,完成此操作后,我能否以某种方式获取JNIEnv实例,从而允许我访问正在运行的JVM中的对象?我正在努力实现的是与Java反射类似的东西,但在native级别上。 最佳答案 AttachAPI就是你要从进程外注入(inject)一个DLL。请注意,它需要合适的操作系统权限。然后使用JNI调用API和标准JNIAPI从内部执行您需要的任何操作。AttachAPIfromOracle和AttachAPIfromIBM

c++ - cout 和 printf 适用于内置调试未发布的 Dll

我构建了一个DLL,它通常通过SetWindowHookEx注入(inject)到控制台应用程序中。DLL将信息输出到控制台很重要,我一直在使用std::cout进行操作。DLL接近完成,直到我尝试在Release模式下构建DLL,这使得所有cout行都变得无用。我已经通过执行导致程序在dllmain函数中崩溃的简单空取消引用来验证DLL正在注入(inject)和执行。与std::printf相同。voidonAttach(){//WARNINGTHISISADEMONSTRATIONstd::cout我真的不知道如何解决这个问题。发布链接器是否以某种方式排除了依赖项?我正在使用MSV

c++ - Cython 代码可以编译成 dll 以便 C++ 应用程序可以调用它吗?

我有一个C++程序,它有一种插件结构:当程序启动时,它会在插件文件夹中寻找具有某些导出函数签名的dll,例如:voidInitPlugin(FuncTable*funcTable);然后程序会调用dll中的函数进行初始化,并将函数指针传递给dll。从那时起,dll就可以与程序对话了。我知道Cython允许您在Python中调用C函数,但我不确定我是否可以编写Cython代码并将其编译为dll,以便我的C++程序可以使用它进行初始化。示例代码会很棒。 最佳答案 在dll中使用cython-module与usingacython-mod