Support
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6cef86b..49d90cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,17 @@
 set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_BUILD_TYPE Debug)
 
+if (CONAN_LIBCXX STREQUAL "libstdc++11")
+    message("Using -D_GLIBCXX_USE_CXX11_ABI=1")
+    add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
+elseif (CONAN_LIBCXX STREQUAL "libstdc++")
+    message("Using -D_GLIBCXX_USE_CXX11_ABI=0")
+    add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
+else ()
+    message("As Default -D_GLIBCXX_USE_CXX11_ABI=0, not set.")
+    #add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
+endif ()
+
 include(CTest)
 
 option(BUILD_TESTS "Build tests" ON)
diff --git a/build.sh b/build.sh
index 0b23ca1..ae8e4c4 100755
--- a/build.sh
+++ b/build.sh
@@ -11,6 +11,7 @@
                        -H:CLibraryPath=./src/main/c/native \
                        -jar ./target/rocketmq-ons-cpp-full.jar \
                        -Dio.netty.noUnsafe=true \
+                       -DOPEN_DUAL_ABI=false \
                        --report-unsupported-elements-at-runtime \
                        --allow-incomplete-classpath \
                        -H:+ReportExceptionStackTraces \
diff --git a/src/main/java/org/apache/rocketmq/graalvm/CInterface.java b/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
index f93a396..f0a7ca7 100644
--- a/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
+++ b/src/main/java/org/apache/rocketmq/graalvm/CInterface.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.parser.ParserConfig;
 import com.alibaba.fastjson.serializer.SerializeConfig;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -61,6 +62,14 @@
              */
             return Collections.singletonList("<rocketmq/rocketmq.h>");
         }
+
+        public List<String> getMacroDefinitions() {
+            if ("true".equalsIgnoreCase(System.getProperty("OPEN_DUAL_ABI"))) {
+                System.out.println("-D_GLIBCXX_USE_CXX11_ABI=1");
+                return Arrays.asList("-D_GLIBCXX_USE_CXX11_ABI=1");
+            }
+            return Arrays.asList("-D_GLIBCXX_USE_CXX11_ABI=0");
+        }
     }
 
     @CStruct("message") interface CMessage extends PointerBase {