草庐IT

c# 将文件指针传递给非托管 c++ dll 以用于标准输出

请耐心等待-我是一名C#开发人员,对C++的经验很少,这是一个陡峭的学习曲线!在C#控制台应用程序中,我从非托管C++dll调用一些方法。DLL写入stdout流,尽管c#控制台未拾取它。我找到了以下代码,我将其添加到C++dll中,现在它成功地将“printf”的内容发送到C#控制台。#include#include#include#includevoidredirect_stdout(){inthConHandle;longlStdHandle;FILE*fp;//allocateaconsoleforthisappAllocConsole();//redirectunbuffer

c# - WCF 服务应用程序 - 使用 C++ 对象调用导致 Visual Basic 6.0 DLL 文件挂起

我们目前正在移动系统以使用WCF遇到了一个我们无法弄清楚的问题。设置是有一个C#DLL文件,它包装了一个C++和一个VisualBasic6.0DLL文件。C#DLL文件对这两者都有包装器,并实例化这两个对象。C++对象被初始化(从文件中获取数据),然后传递给VisualBasic6.0对象,该对象使用C++对象中的数据运行报表。这一切都是作为WCF服务应用程序发生的,并且在大多数情况下它工作得很好,但是当VisualBasic6.0代码调用C++对象中的方法时,整个事情就会挂起。我仅使用一个调用相同C#DLL文件(在WCF之外)的简单应用程序进行了测试,它可以完美运行。所以,WCF和

java - 从 Java 调用 .NET DLL

我正在尝试使用来自Java代码的.NETDLL(通过C++native代码)。流程是这样的。使用visualstudio2010中的C#类库类型项目创建.netDLL。创建nativeC++代码(控制台应用程序)以使用此DLLUsingthisstep-by-stepguidefromMicrosoft此代码能够成功调用DLL代码。用一些本地方法编写Java代码,生成头文件并在C++DLL项目中实现头文件(从相关方法的示例中移动原始代码,使一些变量成为全局变量)。此DLL已成功加载,但代码在为托管类创建接口(interface)指针时失败。请参阅微软指南中的snipper//Creat

c++ - dynamic的动态数组(array of struct)

我有一个名为person的结构,如下所示:structperson{intheight,weight;};我还创建了一个person数组,如下所示:structArrayofperson{intlen;//indicatesthelengthofthisarray(itssupposedtobedynamic)person*p;//thisissupposedtobethedynamicarrayofperson.};我对person的数组执行此操作,如下所示:structArray_2d_ofperson{intlen;//indicatesthelengthofthisarray(

来自 native C++ 加载的 DLL 的 C# 形式

这个问题来自这个线程:NativeC++useC#dllviaproxyC++manageddll简而言之,我正在通过DLL将(我的)C#扩展加载到native进程中。扩展需要显示一个表单,以便用户可以控制它。我使用的是标准.NET表单,没有第3方库或任何东西,而且我的表单没有显示。更糟糕的是,它会挂起目标进程。它没有使用任何CPU,所以我感觉它在等待某个函数返回,但从未这样做过。同样有趣的是弹出了“Initializemethod”消息框,但没有弹出“Test”消息框。我已经测试了所有我能想到的东西(STAthread、线程、DisableThreadLibraryCalls,以及不

c# - 客户端获取从 C++ COM dll 返回的字节数组

我在C++COM头文件和IDL文件中有这个声明://Headerfile:#defineMAX_LENGTH320typedefBYTEPRE_KEY[MAX_LENGTH];//IDLfile:#defineMAX_COUNT10HRESULTSave([in]DWORDdwCommand,[in]floatfdata[MAX_COUNT],[out]PRE_KEY*phKey);这是C#客户端代码://AfterC#interopcompilation,themethod'ssignatureinC#becomes:Save(uintdwCommand,float[]fdata,o

c++ - 动态链接到 visa32.dll 导致崩溃

我正在尝试使用NI-VISA5.1.1通过USB与示波器通信。我的32位应用程序是使用C++和MinGW编译器(标准Qt4.7SDK)在Qt框架中编写的。当我静态链接到visa32.lib时,我的应用程序与设备通信没有问题。我的动态链接代码在Windows764位平台上也运行良好,但在运行WindowsXPSP3(32位)的两台不同计算机上崩溃。我已经追踪到导致崩溃的代码行(这是对viWrite的第一次调用)。这个问题似乎与DLL本身中全局变量的设置有关。这或许可以解释为什么它在Windows7中工作,因为在这种情况下,32位DLL文件只是一个调用64位VISADLL文件的stub。这

c++ - Operator = 不是 DLL 中导出的 C++ __interface 的成员

我一直在为库编写一些代码,并尝试使用默认的Win32控制台应用程序来运行所有内容。因为我已经完成了所有类(class),所以我想将所有内容提取到一个DLL中,因此我开始使用通常的宏进行改编:#ifdefMYLIB_EXPORTS#defineDllExport__declspec(dllexport)#else#defineDllExport__declspec(dllimport)#endif我在我的代码中使用一个接口(interface),它是这样定义的:__interfaceDllExportISerializable{voidSerialize(/*...*/);/*someo

c++ - 使用 C/C++ 以外的语言构建共享库,特别是序言

是否可以使用C或C++以外的语言构建共享库(例如*.so、*.dll)?构建共享库的基本要求是什么?该语言是否能够编译为native二进制文件?我特别想知道是否可以从Prolog构建共享库。例如我可以使用Prolog构建一个.so吗,然后我可以从另一种语言(C、Java、Python等)链接到它。 最佳答案 您可以使用多种语言构建共享库。我经常使用的一个是Delphi,它可以为Windows创建dll。对于Prolog,不确定您是否可以创建共享库,它需要某种运行时环境,如果有的话我会从GNU-Prolog开始。问题不在于许可,而在于

c++ - dllexport 一个全内联类?

考虑一个简单的类,它只包含内联成员函数。例如:templateclassPoint2D{public:typedefPoint2DThisType;typedefT1Tx;typedefT2Ty;T1x;T2y;inlinePoint2D():x(0),y(0){}inlinePoint2D(T1nx,T2ny):x(nx),y(ny){}inlinePoint2D(constPoint2D&b):x(b.x),y(b.y){}inlinePoint2D&operator=(constPoint2D&b){x=b.x;y=b.y;return*this;}inline~Point2D(