Tag: dllexport

未处理的exception:System.AccessViolationException:尝试读取或写入

下面是我的c ++ DLL // DLL.cpp : Defines the exported functions for the DLL application. #include “stdafx.h” //#include #include using namespace std; typedef void (*FunctionPtr)(int); void (*FunctionPtr1)(int); extern “C” __declspec(dllexport)void Caller(); extern “C” __declspec(dllexport)void RegisterFunction(FunctionPtr func_ptr); extern void Caller() { int i = 10; FunctionPtr1(i); } extern void RegisterFunction(FunctionPtr func_ptr1) { FunctionPtr1 = func_ptr1; } 这个DLL将从c#引用函数名称并将参数传递给c#函数。这是我的c#代码 […]

使用回调从Inno Setup调用C#DLL

我有一个正在运行的Inno Setup脚本,其中我使用Sherlock Software的innocallback.dll。 这个DLL包装了我的一个过程,以便它可以传递给C#DLL。 我不想使用这个DLL,我想直接调用我导出的C#方法并将回调过程传递给它。 我的问题是: 如何将我的Inno安装程序( @mycallback )传递给我的C#DLL,以便我可以将它用作我的delegate / UnmanagedFunctionPointer ? 正如我所说的这段代码有效,但我想尽量少用外部DLL。 这是我的代码: Inno安装脚本 type TTimerProc=procedure(); TProgressCallback=procedure(progress:Integer); function WrapProgressProc(callback:TProgressCallback; paramcount:integer):longword; external ‘wrapcallback@files:innocallback.dll stdcall’; function Test(callback:longword): String; external ‘Test@files:ExposeTestLibrary.dll stdcall’; var endProgram : Boolean; procedure mycallback(progress:Integer); begin MsgBox(IntToStr(progress), mbInformation, MB_OK); if progress > 15 then begin endProgram := True; end end; function InitializeSetup:boolean; var progCallBack […]

如何在C#应用程序中使用DllExport C ++类

我创建了一个包含类“myCppClass”的C ++ Dll项目,并尝试使用以下代码将其导出:如下所述: http : //msdn.microsoft.com/en-us/library/a90k134d( v = vs。 80)的.aspx class __declspec(dllexport) CExampleExport : //public CObject { … class definition … }; 我省略了“public CObject”,因为它需要afx.h并暗示它是一个MFC Dll。 我不确定这是否是好事但它与DLL项目默认设置不同。 从上面链接的文档中我可以相信所有“公共函数和成员变量”都可以导入。 我如何在C#中实现这一目标? 可以简单地实例化该类吗? 编辑:我刚刚意识到post的标题可能会产生误导。 重点应该是来自C#的DllImporting,并确保我在C ++中正确地遵循了文档