C++ 如何通过c+中的函数指针复制函数中引用的所有变量、对象等+;

C++ 如何通过c+中的函数指针复制函数中引用的所有变量、对象等+;,c++,excel,vba,multithreading,com,C++,Excel,Vba,Multithreading,Com,因此,我想知道如何从函数指针复制函数/方法范围内的所有引用对象/变量 P>一个关于问题的更多背景->我使用函数的方法从VBA传递一个函数指针到C++方法。其思想是复制VBA方法中的底层变量/对象,以便该函数可以在多个线程上运行。目前,如果我尝试在1多个线程上直接从C++函数中回调函数,它会立即崩溃,我知道这是因为VBA运行在STA中。我的想法是,如果我几乎可以复制函数所需的对象,那么我就可以避免同时引用对象的问题(我可以有更多的控制来确保代码是线程安全的)。我想到的另一种选择是通过COM封送所

因此,我想知道如何从函数指针复制函数/方法范围内的所有引用对象/变量

<> P>一个关于问题的更多背景->我使用函数的方法从VBA传递一个函数指针到C++方法。其思想是复制VBA方法中的底层变量/对象,以便该函数可以在多个线程上运行。目前,如果我尝试在1多个线程上直接从C++函数中回调函数,它会立即崩溃,我知道这是因为VBA运行在STA中。我的想法是,如果我几乎可以复制函数所需的对象,那么我就可以避免同时引用对象的问题(我可以有更多的控制来确保代码是线程安全的)。我想到的另一种选择是通过COM封送所有底层对象,但我也没有成功做到这一点:(我认为这将导致更多问题,因为VBA在技术上意味着在单个线程上运行

任何想法/建议都将受到极大的赞赏,我已经尝试破解此代码几周了,现在已经有点困难了

编辑-以下是从VBA获取函数指针的代码

typedef int (WINAPI *callbackFunc_t)(int, BSTR);

callbackFunc_t callbackFunc;

__declspec(dllexport) void __stdcall setCallbackFunction(callbackFunc_t callbackFunc_)
{
     callbackFunc = callbackFunc_;
}


@ TADMAN不是一个有用的评论,VBA函数和C++方法是什么样子的?是调用VBA函数的C++方法,对吗?是不是只有C++方法调用了VBA函数,或者它也可以从其他地方调用吗?如果只是那个方法,那么用互斥来保护VBA调用如何?VBA在STA中运行。COM STA的发明正是为了通过STA同步(消息队列)防止多线程崩溃。内部VBA对象(它们不是COM对象)不要支持多线程访问和崩溃。@ SimonMourier,我怎么才能在内存中复制这些对象,以便每个线程都有它们的ON版本来访问?我正在尝试解开你的问题。起初我以为你是在问C++的反射。