参考https://blog.csdn.net/Honiyo/article/details/120651711。
如果Ubuntu中Python目录在usr/lib下,则按照上述链接中的指示 *** 作。但是如果想使用Anaconda来管理Python环境,情况会复杂一些,具体 *** 作如下。
- 打开omnet,注意一定要在终端先激活所需的Python环境:
conda activate python37
然后在终端打开omnet:
omnetpp
新建一个C++或Omnet项目(或在现有项目上 *** 作),右键项目——>Propertise——>C/C++ General——>Paths and Symbols,添加Python头文件
在Libraries里添加python3.7m
Library 中加入/home/hty/anaconda3/envs/python37/lib
添加完成,Apply and Close。
- 完成上述配置后,打开终端进行以下 *** 作:
sudo find / -name "libpython3.7m.so
搜索会找到anaconda目录下.so文件的地址,类似
/home/hty/anaconda3/envs/python37/lib/libpython3.7m.so
终端中进行一个软链接的 *** 作:
powershell ln -s /home/hty/anaconda3/envs/python37/lib/libpython3.7m.so /usr/lib/libpython3.7m.so
如果项目是C++项目,那么在omnet中这个项目已经可以自由调用Python了。 但如果项目是omnet项目,还要做以下改动。
- 对omnet的make进行配置
右键项目 -> Properties -> omnet++ -> makemake -> src: makemake -> 右上角options
link -> -l option中填入python3.7m
至此,omnet项目可以调用Python了。
OMNeT调用tensorflow时候,会出现以下警告和信息,提示找不到cuda:
调用终止在.py文件中的import tensorflow。
问题出现的原因:正常python里面import tensorflow时会从启动参数里抓变量(argc,argv),然后C++里调用python就没有继承这些变量。import tf的时候访问这些变量就出错了。
解决方法:手动把C启动时候的变量传进去。
问题解决。
此外,关于C++调用Python的具体 *** 作,可以参考https://blog.csdn.net/dcx_dcx/article/details/104388718
注意Python各版本对应的调用函数略有不同,可以去Python官网按照版本查询。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)