WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Import viz from c++ (https://forum.worldviz.com/showthread.php?t=5737)

Ciccio 06-03-2016 01:38 PM

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

and this is my main c++
Code:

#include "stdafx.h"
#include
#include
#include
#ifdef _DEBUG
#undef _DEBUG
#include
#define _DEBUG
#else
#include
#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;
}


Jeff 06-05-2016 08:39 PM

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.

Ciccio 06-06-2016 04:20 AM

Quote:

Originally Posted by Jeff (Post 18390)
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.

I want to create a sort of virtual programming language (like this) in c++ and I would like to call vizard function in my code c++ to make some action like: add an avatar, move etc.. does it exist some other ways to do this?

Ciccio 06-06-2016 06:16 AM

I think I figured out how to call Viz using SDK (a mix of buttonDown and command, I will post my code once I will finish it) but right now I have another question, is it possible to add an c++ extension from a dll and not a dle? I just found this

Ciccio 06-07-2016 03:21 PM

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();
}

here is the code of CSensor
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;
}

and this is Vizard
Code:

ex=viz.add('BMI.Vizard.dle')
self.sensor =  ex.addSensor()

when from Vizard I call ex.addSensor() the program crash with this report
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

any idea?


All times are GMT -7. The time now is 12:03 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC