PDCurses توي C++ Win32 console app - انتهاك وصول القراءة الموقع

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

  •  27-09-2019
  •  | 
  •  

سؤال

لقد تم تحميل pdcurses المصدر كان قادرا على بنجاح تشمل الشتائم.ح في مشروع ربط جمعت قبل مكتبة كل شيء جيد.

بعد ساعات قليلة من محاولة الخروج من المكتبة ، رأيت tuidemo.ج في العروض مجلد جمعت في ملف قابل للتنفيذ و الرائعة!بالضبط ما كنت بحاجة للحصول على بلدي المشروع.

المشكلة الآن هي أنه رمز C ، أنا أعمل على C++ المشروع في مقابل c++ 2008.

الملفات أحتاج توي.ج توي.ح كيف يمكنني تضمين هذا الملف في C++ الكود ؟ رأيت بعض الاقتراحات هنا

ولكن المترجم لم يكن سعيدا جدا مع 100 من التحذيرات والأخطاء.

كيف يمكن أن تذهب بما في ذلك/باستخدام هذا توي pdcurses ويشمل!?

شكرا

تحرير:

أضفت extern "C" البيان حتى اختباري يبدو هذا الآن, ولكن أنا الحصول على نوع آخر من الخطأ

#include <stdio.h>
#include <stdlib.h>
using namespace std;

extern "C" {
   #include <tui.h>
}

void sub0()
{
    //do nothing
}

void sub1()
{
    //do nothing
}


int main (int argc, char * const argv[]) {

    menu MainMenu[] =
    {
        { "Asub", sub0, "Go inside first submenu" },
        { "Bsub", sub1, "Go inside second submenu" },
        { "", (FUNC)0, "" }   /* always add this as the last item! */
    };
    startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");

    return 0;
}

على الرغم من أنه هو تجميع بنجاح, يتم رمي خطأ في وقت التشغيل ، مما يشير إلى سوء المؤشر:

0xC0000005: Access violation reading location 0x021c52f9

في خط

startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");

غير متأكد أين تذهب من هنا.شكرا مرة أخرى.

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

المحلول 2

أخيرا حصلت على عمل.كان الحل في الخطوات التالية:

أولا أنا سميت توي.c tui.cpp

على رأس توي.ساعة, تابعت بالضبط نفس الخطوة من التفاف التعليمات البرمجية كما هو موضح هنا

ثم في مشروعي أنا فقط شملت رأس دون أي extern "C" كتلة

#include "tui.h"

جمعت وانها عملت!

نصائح أخرى

إذا لم أكن مخطئًا (ويمكنني أن أكون بسهولة) ، فهذا يرجع إلى الفرق في استدعاء اتفاقيات C/C ++. حاول إجراء عمليات الاسترجاعات الخارجية "C" ، وجعلها تتصل بوظيفة C ++. نسميها الترامبولين :)

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