السلام عليكم
لو سمحتو انا استخدم فيجوال سي بلس بلس 2008
بس عندى خطا ما عرفت اصححه
function template has already been defined
يا ريت تساعدونى في تصحيحه
بسرعة وضرورى جدا
السلام عليكم
لو سمحتو انا استخدم فيجوال سي بلس بلس 2008
بس عندى خطا ما عرفت اصححه
function template has already been defined
يا ريت تساعدونى في تصحيحه
بسرعة وضرورى جدا
لست متأكد من مشكلتك , ربما تود طرح البرنامج الذي تعمل عليه, لكن إذا كان في مشروعك ملفات رأسية h. جرب أن تضع ماكرو بسيط في تلك الملفات لمنع إعادة تعريف المتغيرات أو الدوال فيها.
مثلاً لو كان لديك ملف إسمه foo.h إكتب:
#ifndef __FOO_H__ #define __FOO_H__ // وضع جميع محتويات الملف الرأسي هُنا #endif
الآن لن يُعاد تعريف مابداخل الملف إذا سبق أن أدرجته في مكان آخر.
السلام عليكم
لو سمحت ممكن تشرحلى اكثر
لانى ما فهمت عليك
او اعطيك البرنامج تشوفه
إذا كان لديك ملف إسمه foo.h يحتوي :
int x(); int y(int x, int y);
أضيف عليه ليصبح :
#ifndef __FOO_H__ #define __FOO_H__ int x(); int y(int x, int y); #endif
إذا لم تُحل المشكلة, ضع رسالة الخطأ كامة والبرنامج في ردك.
أزل هذا الإدراج :
#include "SplayTree.cpp"
من آخر الملف SplayTree.h. فهو سيدرج SplayTree.h وSplayTree.h سيعيد إدراج SplayTree.cpp ويظهر لك بأن هناك إعادة تعريف.
أيضاً لاتقم بإدراج ملفات الـcpp. بل إجعل الإدراج يقتصر فقط على الملفات الرأسية. إنظر لكيفية تنظيم وتنسيق برنامج :
//foo.h
#ifndef __FOO_H__
#define __FOO_H__
class Foo {
public:
void method(void);
};
#endif//foo.cpp
#include <iostream>
#include "foo.h"
void Foo::method(void)
{
std::cout << "Hello" << std::endl;
}// main.cpp
#include "foo.h"
int main(int argc, char **argv)
{
Foo foo;
foo.method();
return 0;
}وعندما تريد تصريفة, صرفه هكذا :
C:\>cl /EHsc main.cpp foo.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. main.cpp foo.cpp Generating Code... Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. /out:main.exe main.obj foo.obj C:\>
شكرا لك اخى على المساعدة
فقد ازيل الخطا
ولكن البرنامج لم يتنفذ وظهر لى هذا الخطا
1>------ Build started: Project: splayy, Configuration: Debug Win32 ------
1>Linking...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Users\marwa\Documents\Visual Studio 2008\Projects\splayy\Debug\splayy.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\marwa\Documents\Visual Studio 2008\Projects\splayy\splayy\Debug\BuildLog.htm"
1>splayy - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
هل ممكن تصححلى البرنامج
اكون لك شاكرة
اريد أن اعرف ما معنى هذا الخطا وكيف تصحيحه
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
وهذا الخطا أيضا
unresolved externals
ارجو منك الرد
ولك جزيل الشكر
sandra_2012 كتب:اريد أن اعرف ما معنى هذا الخطا وكيف تصحيحه
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
من اساسيات سي++ ان يكون بالبرنامج دالة رئيسية تسمي main() ، اعتقد انكم نسيتم ادراجها بالبرنامج
ادرج الدالة الرئيسة ثم ابني عليها برنامجك ...
اقتباسوهذا الخطا أيضاunresolved externals
هذا ليس خطأ ولكنة جزء من جملة فى الخطأ انظر اول الخطأ السابق
تم تعديل هذه المشاركة بواسطة محمد عودة في 12 سبتمبر 2012 في 07:57