草庐IT

c# - 在c#项目中导入c++ dll

我正在将一些c++dll导入到c#项目中,我使用的是visualstudio2010。我已成功导入使用内置类型的函数,但是当我尝试处理结构时出现错误。这是一个简单的例子:C++代码typedeflongintTDate;typedefstruct_TMDYDate{longmonth;/*Inrange[1,12]*/longday;/*Inrange[1-31]*/longyear;/*Inrange[1600-]*/}TMonthDayYear;intJpmcdsDateToMDY(TDatedate,/*(I)TDateformat*/TMonthDayYear*mdyDate)

c++ - 如何为 C++ (MSVC 2008) 解决方案创建语言附属 DLL?

我们最终要本地化我们的应用程序,需要为字符串表创建附属DLL(从源代码中取出硬编码字符串需要一个月的时间)。我一直在查看MSDN和其他帮助,但我对实际构建语言DLL的机制感到很困惑。我们在EXE本身中有英文资源。根据我的理解,我们现在需要创建名为MyAPPXXX.dll的DLL项目。我不确定我们应该怎么做。是否只有一个资源/rc文件和文件中的不同部分,或者是否为每种语言复制了rc文件并替换了翻译?我在尝试按照我在其他地方看到的有关如何执行此操作的说明时迷路了。是否每种语言都需要一个DLL,或者我们是否有具有多种配置的同一个项目-如果是后者,如何完成?这是我读过的有关此内容的页面列表-但

c# - 将 C# 锯齿状数组编码到 C++

我正在尝试将2DC#交错数组(double[][]jaggedArray)编码到C++dll,其中我已将接收变量指定为double**。但是,我收到消息:Thereisnomarshalingsupportfornestedarrays.如果不展平锯齿状数组,有没有办法在C++dll中使用C#中的锯齿状数组? 最佳答案 使用低级Marshal类方法,可以将任何类型编码到非托管内存。例如,对于jaggedArray中的每个double[]数组,使用Marshal.AllocHGlobal分配非托管内存块,并使用Marshal.Copy

c++ - 如何与 R 中的 DLL 接口(interface)?

我从Matlab创建了dll扩展。然后,我想在R中读取那个dll。我使用了dyn.load()但它不起作用。你能给我一些建议吗? 最佳答案 源代码是用什么语言写的?问题在于混合编译器。Matlabdll很可能是由VisualStudio构建的。而且你根本不能在不同的编译器之间混合C++代码,因为函数标识符会被破坏。通过一些工作,您可以混合使用C目标代码。MinGW网站上有一些常见问题解答。 关于c++-如何与R中的DLL接口(interface)?,我们在StackOverflow上找到

c++ - 尝试在 VC++ 中使用静态类函数编译 DLL 时出错

我正在尝试使用我在独立应用程序中制作和测试过的一些功能。现在我正在尝试创建一个DLL,我收到一些错误,指出该函数已被重新定义并且返回参数不匹配。这似乎是我唯一一次遇到这些错误,我已经通过删除此类对其进行了测试,它编译得很好,独立应用程序的main.cpp直接引用了这些错误。以下是错误以及h和cpp文件:Error7errorC2371:'Parser::parse':redefinition;differentbasictypesc:\users\seb\documents\visualstudio2005\projects\TestDLL\TestDLL\parser.cpp17Er

c++ - 为什么这个异常没有被跨 DLL 捕获?

我有一个DLL会抛出这样的异常:throwPOMException(err,drvErr,errmsg);调用代码在一个单独的程序中,并且有一个try,catchblock,如下所示:try{//functioninseparateDLL}catch(TXNPDO_Exception&e){SR_PERFLOG_MSG(SR_PERFMASK_SELECT,"ERRORselectInStages");TXNDBO_THROW(e);}其中TXNPDO_Exception在包含文件中定义:#defineTXNPDO_ExceptionPOMException在调试器中运行时,它指出PO

c++ - 警告 : auto-importing has been activated without --enable-auto-import specified on the command line

我的环境:QtCreator2.3.1Qt4.7.4(32位)Windows7旗舰版(64位)尝试在QtforWindows中重建项目时,我遇到以下编译器警告:warning:auto-importinghasbeenactivatedwithout--enable-auto-importspecifiedonthecommandline.Thisshouldworkunlessitinvolvesconstantdatastructuresreferencingsymbolsfromauto-importedDLLs.发出此警告的项目包含一个DLL文件。尽管有警告,DLL中的类和函数

c++ - 使用 GetProcAddress : callback function fails with invalid parameter 从 C++ 调用 Delphi DLL

我有一个从C++调用的第3方DelphiDLL。不幸的是,我无法访问PascalDLL代码,也不是Pascal程序员。没有lib文件,所以我使用GetProcAddress调用许多DLL函数,成功地通过值、地址和引用传递参数。我还注册了一个回调函数,它会在预期时被调用。我的问题是在回调函数中,无法评估两个参数之一(地址0x000001)。这是PascalDLL函数声明typeHANDLE=Pointer;///handle(**ThisfunctionRegistersthecallbackfunctionOnACLNeeded*)functionRegisterCallback(h:

c# - 防止在 IIS 中加载特定的 dll

我遇到了以下常见错误:Couldnotloadfileorassembly'...'oroneofitsdependencies.Thespecifiedmodulecouldnotbefound.问题是此dll引用了非托管dll,因此它永远无法正确加载。我只想让IIS忽略这个文件。我正在玩弄标记在web.config中,但没有运气。关于如何防止加载我的一个dll有什么建议吗? 最佳答案 虽然我找不到限制特定程序集的方法,但我能够通过删除所有程序集并添加我需要的特定程序集来完成它。将web.config文件更改为:

c# - 从 C# 调用包含函数指针的 DLL 函数

我有一个用C++编写的DLL,其中包含导出的函数,该函数具有用作回调函数的函数指针。//C++DllExportunsignedintDllFunctionPointer(unsignedinti,unsignedint(*TimesThree)(unsignedintnumber)){returnTimesThree(i);}我有一个CSharp应用程序,我想用它来调用DLL函数。//C#publicunsafedelegateSystem.UInt32CallBack(System.UInt32number);classProgram{[DllImport("SimpleDLL.d