解决EXCEL和CYGWIN-DLL´中堆管理的差异;s
我试图使用一个用C编写的示例IPOPT问题,并将其编译为一个DLL,该DLL在EXCEL VBA代码中使用。 我正在使用Cygwin在Windows中编译DLL。(作为stand allone EXE,它按预期正常工作)。 从EXCEL,我可以访问DLL没有问题,可以交换数据。 但是,只要DLL开始运行IPOPT函数,EXCEL就会关闭并出现错误。 从我的调试活动来看,这是内存分配的结果。 如果DLL中的C代码尝试使用malloc分配内存,EXCEL将出错。 如果DLL中的C代码通过函数LocalAlloc(来自windows.h)分配内存,则一切正常 现在,我显然需要将整个IPOPT代码中的malloc调用(可能还有BLAS、LAPACK和solvers?)从malloc更改为 LocalAlloc。 有没有一种无痛的方法?是否有机会使用包装器或任何方法使EXCEL接受Cygwin创建的C-DLL的堆管理? 有配置选项吗 谢谢你的帮助解决EXCEL和CYGWIN-DLL´中堆管理的差异;s,excel,vba,dll,cygwin,ipopt,Excel,Vba,Dll,Cygwin,Ipopt,我试图使用一个用C编写的示例IPOPT问题,并将其编译为一个DLL,该DLL在EXCEL VBA代码中使用。 我正在使用Cygwin在Windows中编译DLL。(作为stand allone EXE,它按预期正常工作)。 从EXCEL,我可以访问DLL没有问题,可以交换数据。 但是,只要DLL开始运行IPOPT函数,EXCEL就会关闭并出现错误。 从我的调试活动来看,这是内存分配的结果。 如果DLL中的C代码尝试使用malloc分配内存,EXCEL将出错。 如果DLL中的C代码通过函数Loca