У меня есть приложение, написанное на C++, которое использует SWIG для интеграции с python.Доступ к статическим членам класса из dll
Теперь под linux/osx, когда я создаю swig wrapper, он создает такой файл, который используется из приложения, подобного этому.
Py_Initialize();
PyRun_SimpleString("import MoBridge");
PyRun_SimpleString("a = MoBridge.MoBridge()");
PyRun_SimpleString("a.CreateQuadMesh()");
Py_Finalize();
Что это делает она импортирует обертку Mobridge, то он вызывает прогиб обертку C++ функции CreateQuadMesh(). Обертка примерно выглядит примерно так
ч файла:
#include "MoEngine.h"
class MoBridge
{
public:
MoBridge();
~MoBridge();
void CreateQuadMesh();
};
CPP файл:
#include "mobridge.h"
void MoBridge::CreateQuadMesh()
{
MoEngine::CreateMesh();
}
Обертка вызывает MoEngine статической функции, и это в свою очередь делает то, что он делает.
Теперь это отлично работает под Linux/osx, если я правильно понял его, потому что так связан файл.
Но под окнами мне приходилось создавать DLL, и, насколько я понял, файлы DLL загружаются по-разному, поэтому они живут в другой памяти от остальной части приложения и, следовательно, не могут видеть приложения другими статическими методами.
Я знаю, что я могу использовать dllexport для поиска методов из dll для остальной части приложения. Но в этом случае я смотрю, как разрешить DLL доступ к остальным приложениям статических функций в памяти приложений.
Буду признателен за любую точку в правильном направлении.
http://stackoverflow.com/questions/8654327/use-static-class-variable-function-across-dlls http://stackoverflow.com/questions/4911994/sharing-a-global-static-variable -between-a-process-and-dll Я думаю, что они рассматривают ваш вопрос. Дайте ему прочитать – Mercious