![]() |
|
|
|
#1
|
|||
|
|||
|
Import viz from c++
Hello,
I wrote my Vizard (5.0) program in py and every work perfectly. Right now, I'm trying to write a program c++ that load the python code and call all the different functions that I wrote (using Python.h). Everything works fine if I don't import any vizard module but if in my python code I have one or more import viz (or related) the python return this error: "viz module can only be imported by Vizard". Can anyone help me? this is my code python: Code:
import sys
sys.path.append('C:/Program Files/WorldViz/Vizard5/python')
import viz
def add(a, b):
return a+b
Code:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
#ifdef _DEBUG
#undef _DEBUG
#include <Python.h>
#define _DEBUG
#else
#include <Python.h>
#endif
static const char* PLUGIN_NAME = "Sample";
void PrintTotalRefCount()
{
#ifdef Py_REF_DEBUG
PyObject* refCount = PyObject_CallObject(PySys_GetObject((char*)"gettotalrefcount"), NULL);
std::clog << "total refcount = " << PyInt_AsSsize_t(refCount) << std::endl;
Py_DECREF(refCount);
#endif
}
std::string CallPlugIn(const std::string& ln)
{
PyObject* name = PyString_FromString(PLUGIN_NAME);
PyObject* pluginModule = PyImport_Import(name);
Py_DECREF(name);
if (!pluginModule)
{
PyErr_Print();
return "Error importing module";
}
PyObject* filterFunc = PyObject_GetAttrString(pluginModule, "filterFunc");
Py_DECREF(pluginModule);
if (!filterFunc)
{
PyErr_Print();
return "Error retrieving 'filterFunc'";
}
PyObject* args = Py_BuildValue("(s)", ln.c_str());
if (!args)
{
PyErr_Print();
Py_DECREF(filterFunc);
return "Error building args tuple";
}
PyObject* resultObj = PyObject_CallObject(filterFunc, args);
Py_DECREF(filterFunc);
Py_DECREF(args);
if (!resultObj)
{
PyErr_Print();
return "Error invoking 'filterFunc'";
}
const char* resultStr = PyString_AsString(resultObj);
if (!resultStr)
{
PyErr_Print();
Py_DECREF(resultObj);
return "Error converting result to C string";
}
std::string result = resultStr;
Py_DECREF(resultObj);
return result;
}
int main(int argc, char* argv[])
{
Py_Initialize();
PyObject* sysPath = PySys_GetObject((char*)"path");
PyObject* curDir = PyString_FromString(".");
PyList_Append(sysPath, curDir);
Py_DECREF(curDir);
std::string input;
CallPlugIn(input);
PrintTotalRefCount();
Py_Finalize();
system("PAUSE");
return 0;
}
|
|
#2
|
|||
|
|||
|
You can extend Vizard/Python code with C++ code but I'm not sure it's possible to call Vizard modules from a C++ application. Can you describe what you would like to accomplish and I can check further with a developer? Also, take a look at the Vizard SDK docs, this maybe helpful.
|
|
#3
|
|||
|
|||
|
Quote:
|
|
#5
|
|||
|
|||
|
I think I'm getting closer, I created my own extension and from it I load the sensor but I've got a problem:
CExtension.cpp Code:
extern "C" __declspec(dllexport) viz::Extension* CreateVizardExtension(viz::Data &data)
{
return new CExtension();
}
viz::Referenced* CExtension::createSensor(viz::Data &data)
{
int command = data.getInt("command");
return CSensor::Instance();
}
Code:
CSensor* CSensor::singleton = NULL;
CSensor::CSensor()
{
setDataSize(10);
setVision(false);
setOculus(true);
setGyroscope(false);
setSpeed(1);
m_data[ISREADY] = VizENum::Off;
}
void CSensor::command(viz::Data &data)
{
switch (data.getInt("command")) {
default:
break;
case ERRORVIZARD:
setConnected(false);
break;
case ACKNOLEDGECOMMAND:
setAcknoledge(true);
break;
case DATACOMMANDR:
setDataR(data.getFloat("x"),
data.getFloat("y"),
data.getFloat("z"));
break;
case DATACOMMANDL:
setDataL(data.getFloat("x"),
data.getFloat("y"),
data.getFloat("z"));
break;
}
}
int CSensor::getSourceType() const
{
return VIZ_LINK_POS;
}
CSensor* CSensor::Instance()
{
if (singleton == NULL)
singleton = new CSensor();
return singleton;
}
Code:
ex=viz.add('BMI.Vizard.dle')
self.sensor = ex.addSensor()
Code:
Dump Summary ------------ Dump File: crashdump.dmp : C:\Users\ASDAP\AppData\Local\CrashRpt\UnsentCrashReports\Vizard (32-bit)_4.09.0016\5ac47f9d-2fa6-4037-b442-22e676c841c9\crashdump.dmp Last Write Time: 07/06/2016 19:11:40 Process Name: winviz.exe : C:\Program Files (x86)\WorldViz\Vizard4\bin\winviz.exe Process Architecture: x86 Exception Code: 0xC0000005 Exception Information: The thread tried to read from or write to a virtual address for which it does not have the appropriate access. Heap Information: Not Present System Information ------------------ OS Version: 6.1.7601 CLR Version(s): Modules ------- Module Name Module Path Module Version ----------- ----------- -------------- winviz.exe C:\Program Files (x86)\WorldViz\Vizard4\bin\winviz.exe 4.0.0.0 ntdll.dll C:\Windows\SysWOW64\ntdll.dll 6.1.7601.23418 kernel32.dll C:\Windows\SysWOW64\kernel32.dll 6.1.7601.23418 KERNELBASE.dll C:\Windows\SysWOW64\KERNELBASE.dll 6.1.7601.23418 user32.dll C:\Windows\SysWOW64\user32.dll 6.1.7601.19061 gdi32.dll C:\Windows\SysWOW64\gdi32.dll 6.1.7601.23418 lpk.dll C:\Windows\SysWOW64\lpk.dll 6.1.7601.19146 usp10.dll C:\Windows\SysWOW64\usp10.dll 1.626.7601.19054 msvcrt.dll C:\Windows\SysWOW64\msvcrt.dll 7.0.7601.17744 advapi32.dll C:\Windows\SysWOW64\advapi32.dll 6.1.7601.23418 sechost.dll C:\Windows\SysWOW64\sechost.dll 6.1.7601.18869 rpcrt4.dll C:\Windows\SysWOW64\rpcrt4.dll 6.1.7601.23418 sspicli.dll C:\Windows\SysWOW64\sspicli.dll 6.1.7601.23418 CRYPTBASE.dll C:\Windows\SysWOW64\CRYPTBASE.dll 6.1.7601.23418 comdlg32.dll C:\Windows\SysWOW64\comdlg32.dll 6.1.7601.17514 shlwapi.dll C:\Windows\SysWOW64\shlwapi.dll 6.1.7601.17514 comctl32.dll C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_41e855142bd5705d\comctl32.dll 6.10.7601.18837 shell32.dll C:\Windows\SysWOW64\shell32.dll 6.1.7601.19135 imm32.dll C:\Windows\System32\imm32.dll 6.1.7601.17514 msctf.dll C:\Windows\SysWOW64\msctf.dll 6.1.7601.18731 wininet.dll C:\Windows\SysWOW64\wininet.dll 11.0.9600.18315 api-ms-win-downlevel-user32-l1-1-0.dll C:\Windows\SysWOW64\api-ms-win-downlevel-user32-l1-1-0.dll 6.2.9200.16492 api-ms-win-downlevel-shlwapi-l1-1-0.dll C:\Windows\SysWOW64\api-ms-win-downlevel-shlwapi-l1-1-0.dll 6.2.9200.16492 api-ms-win-downlevel-version-l1-1-0.dll C:\Windows\SysWOW64\api-ms-win-downlevel-version-l1-1-0.dll 6.2.9200.16492 version.dll C:\Windows\System32\version.dll 6.1.7600.16385 api-ms-win-downlevel-normaliz-l1-1-0.dll C:\Windows\SysWOW64\api-ms-win-downlevel-normaliz-l1-1-0.dll 6.2.9200.16492 normaliz.dll C:\Windows\SysWOW64\normaliz.dll 6.1.7600.16385 iertutil.dll C:\Windows\SysWOW64\iertutil.dll 11.0.9600.18315 api-ms-win-downlevel-advapi32-l1-1-0.dll C:\Windows\SysWOW64\api-ms-win-downlevel-advapi32-l1-1-0.dll 6.2.9200.16492 userenv.dll C:\Windows\SysWOW64\userenv.dll 6.1.7601.17514 profapi.dll C:\Windows\SysWOW64\profapi.dll 6.1.7600.16385 setupapi.dll C:\Windows\SysWOW64\setupapi.dll 6.1.7601.17514 cfgmgr32.dll C:\Windows\SysWOW64\cfgmgr32.dll 6.1.7601.17621 oleaut32.dll C:\Windows\SysWOW64\oleaut32.dll 6.1.7601.19144 ole32.dll C:\Windows\SysWOW64\ole32.dll 6.1.7601.23392 devobj.dll C:\Windows\SysWOW64\devobj.dll 6.1.7601.17621 clbcatq.dll C:\Windows\SysWOW64\clbcatq.dll 2001.12.8530.16385 cryptsp.dll C:\Windows\System32\cryptsp.dll 6.1.7601.18741 rsaenh.dll C:\Windows\System32\rsaenh.dll 6.1.7600.16385 RpcRtRemote.dll C:\Windows\System32\RpcRtRemote.dll 6.1.7601.17514 ws2_32.dll C:\Windows\SysWOW64\ws2_32.dll 6.1.7601.17514 nsi.dll C:\Windows\SysWOW64\nsi.dll 6.1.7600.16385 inetmib1.dll C:\Windows\System32\inetmib1.dll 6.1.7601.17514 IPHLPAPI.DLL C:\Windows\System32\IPHLPAPI.DLL 6.1.7601.17514 winnsi.dll C:\Windows\System32\winnsi.dll 6.1.7600.16385 snmpapi.dll C:\Windows\System32\snmpapi.dll 6.1.7600.16385 wsock32.dll C:\Windows\System32\wsock32.dll 6.1.7600.16385 mswsock.dll C:\Windows\System32\mswsock.dll 6.1.7601.18254 WSHTCPIP.DLL C:\Windows\System32\WSHTCPIP.DLL 6.1.7600.16385 viz_python.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\viz_python.dll 0.0.0.0 vizcore.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\vizcore.dll 0.0.0.0 opengl32.dll C:\Windows\System32\opengl32.dll 6.1.7600.16385 glu32.dll C:\Windows\System32\glu32.dll 6.1.7600.16385 ddraw.dll C:\Windows\System32\ddraw.dll 6.1.7600.16385 dciman32.dll C:\Windows\System32\dciman32.dll 6.1.7601.19146 dwmapi.dll C:\Windows\System32\dwmapi.dll 6.1.7601.18917 osg.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\osg.dll 2.9.12.72 OpenThreads.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\OpenThreads.dll 2.5.0.12 msvcr90.dll C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcr90.dll 9.0.30729.6161 msvcp90.dll C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcp90.dll 9.0.30729.6161 osgDB.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\osgDB.dll 2.9.12.72 osgUtil.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\osgUtil.dll 2.9.12.72 zlib1.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\zlib1.dll 1.2.5.0 osgText.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\osgText.dll 2.9.12.72 osgParticle.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\osgParticle.dll 2.9.12.72 quartz.dll C:\Windows\System32\quartz.dll 6.6.7601.19091 winmm.dll C:\Windows\System32\winmm.dll 6.1.7601.17514 psapi.dll C:\Windows\SysWOW64\psapi.dll 6.1.7600.16385 python27.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\python27.dll 2.7.2150.1013 CrashRpt1300.dll C:\Program Files (x86)\WorldViz\Vizard4\bin\CrashRpt1300.dll 1.3.0.0 uxtheme.dll C:\Windows\System32\uxtheme.dll 6.1.7600.16385 wintrust.dll C:\Windows\SysWOW64\wintrust.dll 6.1.7601.18839 crypt32.dll C:\Windows\SysWOW64\crypt32.dll 6.1.7601.18839 msasn1.dll C:\Windows\SysWOW64\msasn1.dll 6.1.7601.17514 _hashlib.pyd C:\Program Files (x86)\WorldViz\Vizard4\bin\DLLs\_hashlib.pyd 0.0.0.0 transform.pyd C:\Program Files (x86)\WorldViz\Vizard4\bin\DLLs\transform.pyd 0.0.0.0 _ctypes.pyd C:\Program Files (x86)\WorldViz\Vizard4\bin\DLLs\_ctypes.pyd 0.0.0.0 BMI.Vizard.dle C:\Users\ASDAP\Documents\Francesco\BMI v3.0\Debug\Viz\BMI.Vizard.dle 0.0.0.0 msvcp140.dll C:\Windows\System32\msvcp140.dll 14.0.23918.0 VCRUNTIME140.dll C:\Windows\System32\VCRUNTIME140.dll 14.0.23918.0 api-ms-win-crt-runtime-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-runtime-l1-1-0.dll 10.0.10586.9 ucrtbase.dll C:\Windows\System32\ucrtbase.dll 10.0.10586.9 api-ms-win-core-timezone-l1-1-0.dll C:\Windows\System32\api-ms-win-core-timezone-l1-1-0.dll 10.0.10586.9 api-ms-win-core-file-l2-1-0.dll C:\Windows\System32\api-ms-win-core-file-l2-1-0.dll 10.0.10586.9 api-ms-win-core-localization-l1-2-0.dll C:\Windows\System32\api-ms-win-core-localization-l1-2-0.dll 10.0.10586.9 api-ms-win-core-synch-l1-2-0.dll C:\Windows\System32\api-ms-win-core-synch-l1-2-0.dll 10.0.10586.9 api-ms-win-core-processthreads-l1-1-1.dll C:\Windows\System32\api-ms-win-core-processthreads-l1-1-1.dll 10.0.10586.9 api-ms-win-core-file-l1-2-0.dll C:\Windows\System32\api-ms-win-core-file-l1-2-0.dll 10.0.10586.9 api-ms-win-crt-string-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-string-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-heap-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-heap-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-stdio-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-stdio-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-convert-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-convert-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-locale-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-locale-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-math-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-math-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-multibyte-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-multibyte-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-time-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-time-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-filesystem-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-filesystem-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-environment-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-environment-l1-1-0.dll 10.0.10586.9 api-ms-win-crt-utility-l1-1-0.dll C:\Windows\System32\api-ms-win-crt-utility-l1-1-0.dll 10.0.10586.9 apphelp.dll C:\Windows\System32\apphelp.dll 6.1.7601.19050 |
![]() |
| Tags |
| c++, import, vizard 5.0 |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Unable to draw EyeLink drift correction to screen | chris2307 | Vizard | 6 | 08-18-2014 02:22 PM |
| Problems with using WIRKS without the Kinect in a mirror setting | Jennifer | Vizard | 0 | 06-03-2013 03:17 PM |
| Import 3DS to Vizard | suwan116 | Vizard | 1 | 05-09-2011 01:28 PM |
| Best way to import map data from 3ds Max | v-Salik | Vizard | 6 | 04-09-2010 04:40 AM |
| Pick porblem with arrays | shivanangel | Vizard | 3 | 08-27-2007 10:10 AM |