win10+vs2017+cuda10试图编译c++失败,op.h生成失败

笔记本环境

win10+vs2017+cuda10

##遇到的问题
最近在尝试使用windows系统编译c++版本的mxnet,按照官方教程安装好依赖,使用cmake gui进行configurate和generate(这里默认cpp-package不勾选),出现一些红色warning,比如Google test not found之类的,官方教程没有提到安装,所以忽略了这些warning,使用vs2017打开.sln,调成release x64,进行编译,期间会报很多warning,然后最后会显示成功。然后我发现libmxnet.dll生成了,但是使用python OpWrapperGenerator.py libmxnet.dll时会报错,“OSError: exception: access violation writing 0x0000000000000000”

自己的疑惑

我生成的libmxnet.dll只有200+k,我看其他人都有几百兆,是不是没有正常生成,但是vs下也没有报错啊,就很迷。想问一下官方的教程提到的依赖之外还需不需要安装别的依赖了,这里附上官方教程:https://mxnet.apache.org/get_started/windows_setup
我按照官方教程操作了很多遍,每次编译都要三四个小时,但是都会报错,求问有没有人编译好的,是按照什么方法编译的呢,可不可以给一份有效的教程,谢谢

我来解答你这个问题吧,其实这个问题的关键点在python的ctype的loadlibrary,python3.8及以上版本,这个loadlibrary的实现发生了变化,导致你必须把所依赖的所有非系统的dll都拷贝到当前目录,才能loadlibrary成功,使用python3.7能解决这个问题。
另外,mxnet170是要生成mxnet_61或者mxnet_75这类dll的,libmxnet.dll只是一个包装,依赖于mxnet_.dll。由于python加载dll的限制,在mxnet170上,你依然要手动拷贝mxnet_.dll和libmxnet.dll。
而mxnet151,使用python3.7则没有任何问题,不过要注意的一点是,要把其他依赖库路径加到系统环境变量里。

我现在虽然能编译通过,但是我也有问题无法解决,cpp_package里的那个charRnn例子,虽然能编译通过,但是运行却一直提示参数错误