c# 动态调用c++ dll动态链接库 多线程的问题

我有一个c#控制台程序 和一个写好的c++ dll,

想通过c#Task方式调用dll中的函数,

经测试,单任务下能够进行完美调用 c# [dllimport]方式

现若在c#中增加Task,便会导致异常报错,dll层,dll使用了锁机制,

单个静态对象指针 Person *p = new Person();

Task.Run(()=>{

//调用p.fun1();

});

Task.Run(()=>{

//调用p.fun2();

});//error

引发的异常:“System.Runtime.InteropServices.SEHException”(位于 ConsoleApp2.dll 中)
引发的异常:“System.Runtime.InteropServices.SEHException”(位于 ConsoleApp2.dll 中)
引发的异常:“System.Runtime.InteropServices.SEHException”(位于 System.Private.CoreLib.dll 中)
引发的异常:“System.Runtime.InteropServices.SEHException”(位于 System.Private.CoreLib.dll 中)
引发的异常:“System.AggregateException”(位于 System.Private.CoreLib.dll 中)
“System.AggregateException”类型的未经处理的异常在 System.Private.CoreLib.dll 中发生 
One or more errors occurred.

 

今日,看到c++ 可以导出类,我想可不可以吧dll中的对象类导出,之后使用c#在Task中进行对c++类的实例化,进而实现多线程?不想在dll中添加任何导出,增加dll的整洁度(Tensorrt项目)

 

 

 Person *p = new Person();

C# 调用C++中多线程对象 不要使用静态对象指针,会发生内存泄露

检查C++代码的逻辑

C++编译的时候,可选线程安全参数,确认是否选择了线程安全,再就是如果这个DLL引用了别的库,也需要线程安全。。