diff options
author | siddharth jain <sija@microsoft.com> | 2020-12-18 08:58:26 +0300 |
---|---|---|
committer | siddharth jain <sija@microsoft.com> | 2020-12-18 08:58:26 +0300 |
commit | e9cc90e73ab26546906809d5af8ddd5c7e092add (patch) | |
tree | a31222cd0507e0fe529f1fc0cd1ee8fa677c86b1 | |
parent | b8c5ad2bbccaf720244ddf7cd644300627dc965b (diff) |
shared object generation
-rw-r--r-- | moses2/DLLEntryApi.cpp | 32 | ||||
-rw-r--r-- | moses2/Jamfile | 12 |
2 files changed, 36 insertions, 8 deletions
diff --git a/moses2/DLLEntryApi.cpp b/moses2/DLLEntryApi.cpp index b559b62e5..155a6664c 100644 --- a/moses2/DLLEntryApi.cpp +++ b/moses2/DLLEntryApi.cpp @@ -1,10 +1,32 @@ #include "Moses2Wrapper.h" #include <iostream> -#include <windows.h> +#ifdef WIN32 + #include <windows.h> +#endif // DEBUG + +#if defined(_MSC_VER) +// Microsoft + #define EXPORT __declspec(dllexport) + #define IMPORT __declspec(dllimport) +#elif defined(__GNUC__) +// GCC + #define HRESULT int + #define EXPORT __attribute__((visibility("default"))) + #define __stdcall + #define IMPORT + #define S_OK 0 + #define E_FAIL 1 +#else +// do nothing and hope for the best? + #define EXPORT + #define IMPORT + #pragma warning Unknown dynamic link import/export semantics. +#endif + using namespace std; using namespace Moses2; -extern "C" __declspec(dllexport) HRESULT __stdcall GetMosesSystem(const char* filePath, Moses2::Moses2Wrapper ** pObject) { +extern "C" EXPORT HRESULT __stdcall GetMosesSystem(const char* filePath, Moses2::Moses2Wrapper ** pObject) { if (*pObject == NULL) { *pObject = new Moses2::Moses2Wrapper(filePath); return S_OK; @@ -14,7 +36,7 @@ extern "C" __declspec(dllexport) HRESULT __stdcall GetMosesSystem(const char* fi } } -extern "C" __declspec(dllexport) HRESULT __stdcall MosesTranslate(Moses2::Moses2Wrapper * pObject, long id, const char* input, char* output, int strlen) { +extern "C" EXPORT HRESULT __stdcall MosesTranslate(Moses2::Moses2Wrapper * pObject, long id, const char* input, char* output, int strlen) { if (pObject != NULL) { std::string tr = pObject->Translate(input, id); @@ -26,7 +48,7 @@ extern "C" __declspec(dllexport) HRESULT __stdcall MosesTranslate(Moses2::Moses2 return E_FAIL; } } -extern "C" __declspec(dllexport) int __stdcall ReleaseSystem(Moses2::Moses2Wrapper ** pObject) { +extern "C" EXPORT int __stdcall ReleaseSystem(Moses2::Moses2Wrapper ** pObject) { if (*pObject != NULL) { delete *pObject; @@ -37,6 +59,6 @@ extern "C" __declspec(dllexport) int __stdcall ReleaseSystem(Moses2::Moses2Wrapp return E_FAIL; } } -extern "C" __declspec(dllexport) string __stdcall GetEngineVersion() { +extern "C" EXPORT string __stdcall GetEngineVersion() { return "1.0"; }
\ No newline at end of file diff --git a/moses2/Jamfile b/moses2/Jamfile index 9c1a6840b..ed7f4cc97 100644 --- a/moses2/Jamfile +++ b/moses2/Jamfile @@ -52,7 +52,7 @@ alias deps : ..//z ..//boost_iostreams ..//boost_filesystem : : : $(max-factors TypeDef.cpp Vector.cpp Weights.cpp - Word.cpp + Word.cpp FF/Distortion.cpp FF/FeatureFunction.cpp FF/FeatureFunctions.cpp @@ -188,9 +188,15 @@ alias deps : ..//z ..//boost_iostreams ..//boost_filesystem : : : $(max-factors : $(includes) ; - +lib moses2so : + Moses2Wrapper.cpp + DLLEntryApi.cpp + moses2_lib + : <link>shared + $(includes) + ; exe moses2 : Main.cpp moses2_lib ../probingpt//probingpt ../util//kenutil ../lm//kenlm ; echo "Building Moses2" ; -alias programs : moses2 ; +alias programs : moses2 moses2so ; |