草庐IT

dll丢失

全部标签

c# - 如何使用命名管道在 C++ .dll 和 C# 应用程序之间发送消息?

我正在制作一个用C++编写的注入(inject).dll,我想使用命名管道与C#应用程序通信。现在,我在C#应用程序中使用内置的System.IO.Pipe.net类,并且在C++中使用常规函数。我在C++方面没有太多经验(阅读:这是我的第一个C++代码..),但我在C#方面很有经验。似乎与服务器和客户端的连接正常,唯一的问题是消息没有被发送。我尝试将.dll作为服务器,将C#应用程序作为服务器,将管道方向设为InOut(双工),但似乎都不起作用。当我尝试使.dll成为向C#应用程序发送消息的服务器时,我使用的代码如下:DWORDServerCreate()//functiontocr

c++ - 在注入(inject)的 DLL 中调用函数

我想在我创建的注入(inject)DLL的远程进程中调用一个函数。我已经成功地将我的DLL注入(inject):CreateRemoteThread(pHandle,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"LoadLibraryA"),pLibRemote,0,NULL);DllMain被执行,DLL以待机模式运行。我想做的是以某种方式调用远程加载的DLL以完成一些工作。我试过像这样导出函数:extern"C"__declspec(dllexport)voidMyFunc(vo

c++ - 缺少 MSVCP100D.dll

当我尝试调试我的C++应用程序时出现错误Theprogramcan'tstartbecauseMSVCP100D.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.我在这里找到了一个有类似问题的人:RemotedebuggingC++ontheWindowsServer2008platformwithVS2010;MSVCP100D.dllmissing但是,当我转到解决方案属性时,那里给出的解决方案似乎没有出现。重新安装VisualStudio会解决这个问题吗? 最

c++ - COM 初始化和在 Win32 C++ DLL 中的使用

我正在编写一个使用COM查询WMI的Win32C++DLL。如何以编程方式确定COM是否已初始化?谢谢。 最佳答案 MarkRansom是对的直接、干净和简单的解决方案是要求调用者对COM进行初始化。丑陋的骇客您可以尝试第一次调用-可能是CoCreateInstance,如果它返回CO_E_NOTINITIALIZED,请自己运行CoInitialize(在这种情况下不要忘记取消初始化)但是,从DLL将CoInitialize“注入(inject)”到调用者线程中仍然存在问题。所以有一个清洁溶液让DLL创建一个工作线程(这意味着DL

c++ - 是否有类似 .dll 或 .so 的东西,但跨平台?

是否有类似.dll或.so的东西,但跨平台? 最佳答案 Java.class文件和.jar存档将满足此要求,在Mono下运行的.Net程序集也是如此。 关于c++-是否有类似.dll或.so的东西,但跨平台?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2136165/

c++ - 我需要分发一个头文件和一个带有 DLL 的 lib 文件吗?

我正在为客户更新DLL,由于公司政策等原因,我的公司决定不再与客户共享源代码。以前。我假设他们拥有所有源代码并将其作为VC++6项目导入。现在他们必须链接到预编译的DLL。我想,至少,我需要分发带有DLL的*.lib文件,以便可以定义DLL入口点。但是,我还需要分发头文件吗?如果我可以不分发它,客户将如何将DLL导入到他们的代码中? 最佳答案 是的,您需要将header与您的.lib和.dll一起分发为什么?至少有两个原因:因为C++需要知道库中函数的返回类型和参数(粗略地说,大多数编译器使用namemangling来将C++函数签

C++11 `T&&` 参数丢失其 `&&` 正确术语?

以下C++11代码无法编译:structT{};voidf(T&&){}voidg(T&&t){f(t);}intmain(){g(T());}正确的做法是:voidg(T&&t){f(move(t));}这很难用正确的自然语言术语来解释。参数t似乎失去了它需要用std::move恢复的“&&”状态。g(T())中的T()是什么意思?g(T&&t)中的T&&是什么意思?g(T&&t)中的t是什么意思?f(t)和f(move(t))中的t是什么?move(t)的返回值是什么?你怎么称呼整体效果?标准的哪些部分涉及此问题? 最佳答案 关

c# - 用于创建 DLL : C++ or C# 的编程语言

这不是编程问题!我要为某个应用程序编写一个DLL。我有两个选项可供选择:C++或C#我应该用哪种语言编写DLL?这会影响功能吗?我是一个完全的新手,不知道C++和C#(但C#中的一些小程序)。用C++或C#编写DLL的优缺点是什么?非常感谢您的宝贵时间!问候,斯瓦南德! 最佳答案 DLL最好用C编写:)让我解释一下:DLL是在C++进入主流使用之前构思出来的。它们是为C语言创建的。您可以使用C++编写DLL,但您只能从使用与DLL相同版本的相同编译器编写的应用程序中轻松使用它们。CDLL可以从.NET中使用,这与C++不同(是的,我

c++ - 可以使用 thread_local 在 dll 中为每个线程提供一个静态全局变量吗?

我想使用C++11关键字thread_local在我们的开源库中,它可以在静态变量的上下文中动态或静态地链接到许多平台(Windows、Linux、MacOS等)上。这个变量是一个类类型,基本上只是封装一个std::stringstream变量并初始化它以满足我们的stringstream格式要求。出于性能原因,我们希望它静态可用(有关更多详细信息,请参阅我之前的question),如果这是每个线程完成的也可以。全局变量应该在静态模板类方法中使用,这些方法必须在头文件中实现。但这意味着,如果我理解正确的话,库的用户可能会在他们的可执行文件代码中包含此header,这会将模板化方法编译到

java - 如何使用 gcc 编译器或其他编译器生成 64 位 .dll。无法在 AMD 64 位平台上加载 IA 32 位 .dll

您好,我没有找到如何创建64位dll的解决方案。并使用它的原生C++方法。我使用Java代码metodynatywne.java:classmetodynatywne{static{System.loadLibrary("metodynatywne");}nativepublicvoidsayHello();publicstaticvoidmain(Stringargv[]){newmetodynatywne().sayHello();}}然后生成metodynatywne.h使用javah-jnimetodynatywne我写了metodynatywne.cpp代码:#include