برنامج C / C ++ يتصل بك 32 بت DB2 و 64 بت DB2 في وقت واحد

StackOverflow https://stackoverflow.com/questions/540715

  •  22-08-2019
  •  | 
  •  

سؤال

هل من الممكن أن المؤلف بنجاح برنامج C / C ++ في أنظمة التشغيل IX تعمل على تطبيقات DB2 32 بت و 64 بت في وقت واحد؟

الشرط الدقيق هو القراءة من قاعدة بيانات DB2 32 بت والكتابة في قاعدة بيانات DB2 64 بت.

هل كانت مفيدة؟

المحلول

نظرا لأن العميل المشترك C يستخدم اتصال شبكة، فلا يوجد سبب واضح لعدم الاتصال عميل 32 بت إما خادم 32 بت أو 64 بت (أو كليهما على اتصالات منفصلة). نفس التعليق ينطبق على عملاء 64 بت. يجب أن يكون بروتوكول DRDA المستخدم للتواصل بين العميل والخادم على ما يرام.

يمكنني الإجابة بشكل نهائي على Informix (الذي لم تسأل عنه) - أستخدم ESQL / C 32 بت أو 64 بت للاتصال بخوادم IDS 32 بت أو 64 بت دون مشكلة. القيد الوحيد هو على اتصال الذاكرة المشتركة؛ ثم يجب أن يكون العميل والخادم من نفس "The Bititiness". لكن اتصالات الشبكة والاتصالات المحلية (الدفق، المقبس) محايدة.

نصائح أخرى

أعتقد أن مشكلتك هي أنه يجب عليك تحميل المكتبات في وقت واحد. لا يمكنك فقط ربط كليهما بالتنفيذ باستخدام خيارات اثنين -L، لأن أسماء الرموز تصطدم. إذا كانت هذه هي المشكلة، DLOPEN إذا كان صديقك.

#include <dlfcn.h>

void * handle=dlopen(filename,RTLD_NOW|RTLD_GLOBAL);

bool (*some_function)(char * name);
some_function=(bool (*)(char *))dlsym(handle,"name_of_some_function");
if (some_function("test")) {
    ....
} else {
    ....
}

لأنني لا أعرف DB2 لا أستطيع مساعدتك في أبعد من ذلك، ولكن إذا كانت هذه هي المشكلة، فيجب أن يكون لديك الآن كل شيء لحل المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top