Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsiddharth jain <sija@microsoft.com>2020-12-18 08:58:26 +0300
committersiddharth jain <sija@microsoft.com>2020-12-18 08:58:26 +0300
commite9cc90e73ab26546906809d5af8ddd5c7e092add (patch)
treea31222cd0507e0fe529f1fc0cd1ee8fa677c86b1
parentb8c5ad2bbccaf720244ddf7cd644300627dc965b (diff)
shared object generation
-rw-r--r--moses2/DLLEntryApi.cpp32
-rw-r--r--moses2/Jamfile12
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 ;