У меня есть приложение, написанное на C++, которое использует SWIG для интеграции с Python.
Теперь под linux/osx, когда я создаю оболочку swig, он создает такой файл, который используется из такого приложения.
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();
};
СРР-файл:
#include "mobridge.h"
void MoBridge::CreateQuadMesh()
{
MoEngine::CreateMesh();
}
Оболочка вызывает статическую функцию MoEngine, а она, в свою очередь, делает то, что делает.
Теперь это прекрасно работает под Linux/osx, если я правильно понял, потому что файл связан таким образом.
Но под окнами мне пришлось создать DLL, и, насколько я обнаружил, файлы DLL загружаются по-разному, поэтому они живут в памяти, отличной от остальной части приложения, и, следовательно, не могут видеть приложения с другими статическими методами.
Я знаю, что могу использовать dllexport для предоставления методов из dll остальной части приложения. Но в этом случае я ищу, как разрешить dll доступ к остальным статическим функциям приложений в памяти приложений.
Я был бы признателен за любую точку в правильном направлении.