今日、私は同じ問題に直面しました。私にとっては、クラスの前にタイプを含めることができませんでした。つまり、変更する必要がありました:
class Core
{
private:
py::object cls;
py::object obj;
py::object startFunc;
py::object startFuncAsync;
py::object stopFunc;
...
public:
...
};
に
#ifndef CORE_H
#define CORE_H
/* If we are we on Windows, we want a single define for it.*/
#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
#define _WIN32
#endif /* _WIN32 */
#if defined(_WIN32) && defined(_CORE_BUILD_DLL)
/* We are building FV as a Win32 DLL */
#define CORE_API __declspec(dllexport)
#elif defined(_WIN32) && defined(CORE_DLL)
/* We are calling FV as a Win32 DLL */
#define CORE_API __declspec(dllimport)
#elif defined(__GNUC__) && defined(_CORE_BUILD_DLL)
/* We are building FV as a shared / dynamic library */
#define CORE_API __attribute__((visibility("default")))
#else
/* We are building or calling CORE as a static library */
#define CORE_API
#endif
class CORE_API Core
{
private:
py::object cls;
py::object obj;
py::object startFunc;
py::object startFuncAsync;
py::object stopFunc;
...
public:
...
};
サイドノート:
これにより、プロジェクトを adll
または aとしてビルドすることができlib
ます (つまり、それらを含めて使用します)。また、このコードを Linux でコンパイルすることもできるため、ここではプラットフォーム固有のものはありません。
Visual Studio で dll をビルドする場合は、[プロパティ] > [C/C++] > [コマンドライン] に移動して、次のように入力します。
/D_CORE_BUILD_DLL
CORE
自分の指定した名前に置き換えます。