Я использую python для обработки некоторых .obj
файлов, которые мне нужны в моем приложении opengl / c ++.Мой скрипт называется boundingBox.py
, а функция внутри него называется getBoundingBox(filename)
.Вот код, который я пытался использовать:
Py_Initialize();
const char* module = "./scripts/boundingBox.py";
const char* function = "getBoundingBox";
PyObject* moduleStr = PyUnicode_FromString(module);
PyObject* myModule = PyImport_Import(moduleStr);
if (myModule != NULL) {
PyObject* myFunction = PyObject_GetAttrString(myModule, function);
if (myFunction && PyCallable_Check(myFunction)) {
//executing the function to obtain 2 bounding boxes
const char* filename1 = "./models/tree.obj";
const char* filename2 = "./models/farmhouse.obj";
PyObject* file1 = PyUnicode_FromString(filename1);
PyObject* arg1 = PyTuple_Pack(1, file1);
PyObject* myResult1 = PyObject_CallObject(myFunction, arg1);
if (PyTuple_Check(myResult1)) {
cout << "successfully got bounding box 1" << endl;
}
PyObject* file2 = PyUnicode_FromString(filename2);
PyObject* arg2 = PyTuple_Pack(1, file2);
PyObject* myResult2 = PyObject_CallObject(myFunction, arg2);
if (PyTuple_Check(myResult2)) {
cout << "successfully got bounding box 2" << endl;
}
}
else {
PyErr_Print();
}
}
else {
PyErr_Print();
}
Есть несколько проблем, с которыми я сталкиваюсь, и документация, а также другие вопросы по SO, похоже, не помогают ...
- Я не знаю, какой у меня текущий рабочий каталог, я предполагаю, что именно поэтому
"boundingBox.py"
не может быть найден. - Я не знаю, как получить доступ к файлам
.obj
из интерпретатора Python. - Мне нужно решение, которое будет работать не только на моем компьютере, но и на компьютере моего профессора, когда я отправляю ему проект, без необходимости вносить какие-либо изменения в его компьютер.
В настоящее время структура проекта выглядит следующим образом (каждое имя является каталогом, если у него нет формата файла):
>lab03:
>>build
>>external
>>common
>>lab03:
>>>models
>>>> tree.obj
>>>> farmhouse.obj
>>>scripts
>>>> boundingBox.py
>>>lab03.exe
Когда меня учили c, и я хотел открытьфайл, он должен был находиться в том же каталоге, поэтому в этом предположении я использовал пути относительно пути исполняемого файла.Видимо, я был неправ, но я не могу понять, как это исправить.Любая помощь с благодарностью.