1
私は独自のpython(3.6)モジュールを作成するために、boost python APIを学びたいと思っています。私は次のC++コードを正常にコンパイルして、生成するpythonTest.dllを得ることができます。pythonモジュールはboost pythonを使っていますか?
次に、pythonTest.dllを次のようなモジュールフォルダにコピーします。
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pythonTest
>>> pythonTest.hello_world()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
**AttributeError: module 'pythonTest' has no attribute 'hello_world'**
>>> help(pythonTest)
Help on package pythonTest:
NAME
pythonTest
PACKAGE CONTENTS
pythonTest
FILE
<...>\pythontest\__init__.py
>>> dir(pythonTest)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__','__name__', '__package__', '__path__', '__spec__']
>>>
私は何をしないのです?私のpythonを実行すると、それはモジュールをインポートしますが、それは私のhello_world機能を見つけることができません
pythonTest\
__init__.py
pythonTest.pyd
(私はpythonTest.pydにpythonTest.dllの名前を変更しますか)おかげさまで EDIT
: これは、Visual Studioのビルドから出力された:
1>------ Rebuild All started: Project: pythonTest, Configuration: Release x64 ------
1>Build started 7/10/2017 2:49:53 PM.
1>InitializeBuildStatus:
1> Creating "x64\Release\pythonTest.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1> pythonTest.cpp
1>G:\DataBackup\dev-vc13\3rdParty\boost_1_64_0\boost/python/detail/caller.hpp(55): warning C4244: 'return' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
1>Link:
1> Creating library G:\DataBackup\dev-vc13\temp\pythonTest\x64\Release\pythonTest.lib and object G:\DataBackup\dev-vc13\temp\pythonTest\x64\Release\pythonTest.exp
1> Generating code
1> Finished generating code
1> pythonTest.vcxproj -> G:\DataBackup\dev-vc13\temp\pythonTest\x64\Release\pythonTest.dll
1>PostBuildEvent:
1> 1 file(s) copied.
1>FinalizeBuildStatus:
1> Deleting file "x64\Release\pythonTest.tlog\unsuccessfulbuild".
1> Touching "x64\Release\pythonTest.tlog\pythonTest.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:04.21
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
DLLをビルド中にVisual Studioコンパイラが警告を表示しますか? – VolAnd