Из-за чего ошибка?

Тема в разделе "MS Visual C++", создана пользователем Masters, 21 фев 2009.

Наш партнер Genesis Hackspace
  1. Masters

    Masters Гость

    Код (Text):
    #pragma once


    namespace as {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///      свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///      связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///      конструкторы не смогут правильно работать с локализованными
    ///      ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: добавьте код конструктора
    //
    }

    protected:
    /// <summary>
    /// Освободить все используемые ресурсы.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::TextBox^ textBox1;
    protected:
    private: System::Windows::Forms::Button^ button1;
    private: System::Windows::Forms::Label^ label1;

    private:
    /// <summary>
    /// Требуется переменная конструктора.
    /// </summary>
    System::ComponentModel::Container ^components;

    #pragma region Windows Form Designer generated code
    /// <summary>
    /// Обязательный метод для поддержки конструктора - не изменяйте
    /// содержимое данного метода при помощи редактора кода.
    /// </summary>
    void InitializeComponent(void)
    {
    this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->label1 = (gcnew System::Windows::Forms::Label());
    this->SuspendLayout();
    //
    // textBox1
    //
    this->textBox1->Location = System::Drawing::Point(73, 63);
    this->textBox1->Name = L"textBox1";
    this->textBox1->Size = System::Drawing::Size(100, 20);
    this->textBox1->TabIndex = 0;
    //
    // button1
    //
    this->button1->Location = System::Drawing::Point(140, 134);
    this->button1->Name = L"button1";
    this->button1->Size = System::Drawing::Size(75, 23);
    this->button1->TabIndex = 1;
    this->button1->Text = L"button1";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    //
    // label1
    //
    this->label1->AutoSize = true;
    this->label1->Location = System::Drawing::Point(13, 143);
    this->label1->Name = L"label1";
    this->label1->Size = System::Drawing::Size(35, 13);
    this->label1->TabIndex = 2;
    this->label1->Text = L"label1";
    //
    // Form1
    //
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(292, 266);
    this->Controls->Add(this->label1);
    this->Controls->Add(this->button1);
    this->Controls->Add(this->textBox1);
    this->Name = L"Form1";
    this->Text = L"Form1";
    this->ResumeLayout(false);
    this->PerformLayout();

    }
    #pragma endregion
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

    double pow(double,int);
    double m = pow(10,3);

    }
    };
    }
    Код (Text):
    Компиляция...
    as.cpp
    Компоновка...
    as.obj : error LNK2028: ссылка на неразрешенную лексему (0A000005) "double __clrcall pow(double,int)" (?pow@@$$FYMNNH@Z) в функции "private: void __clrcall as::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@as@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    as.obj : error LNK2019: ссылка на неразрешенный внешний символ "double __clrcall pow(double,int)" (?pow@@$$FYMNNH@Z) в функции "private: void __clrcall as::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@as@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    C:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\as\Debug\as.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
    math.h подключен, почему не собирается?
     
  2. Masters

    Masters Гость

    Так работает, double m = pow(10.0,3.0);
    Что интересно, gcc компилит без всяких точек нормально, а vc++ нет.
     
  3. alexsid

    alexsid Гость

    а че за объявление в теле метода ?
    Код (Text):
     private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    можно попробовать так:
    Код (Text):
    #include <math.h>

    ....

    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
    #ifdef _MANAGED
    #pragma managed(push, off)
    #endif 

    double m = pow(10.0, 3);

    #ifdef _MANAGED
    #pragma managed(pop)
    #endif
    }
     
Загрузка...

Поделиться этой страницей