2015-09-07 2 views
0

Пытается начать с Visual C++, используя версию 2010 Express.Определение функции для использования по проекту Visual C++

Попытка выяснить что-то.

Если вы определяете функцию в файле Project.cpp, почему я не могу использовать ее в файле Form1.h, в частности, private: System::Void Form1_Load?

Я получаю эту ошибку:

1>c:\users\boss\documents\visual studio 2010\projects\second\second\Form1.h(94): error C3861: 'Function': identifier not found 

Есть ли способ, чтобы определить функцию, поэтому он может быть использован в любом месте?

в Form1.h:

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { 
    this->txtMain->Text += FunctionX("Data"); 
    this->txtMain->SelectionStart = this->txtMain->Text->Length; 
} 

в Project.cpp:

std::string FunctionX(std::string message) { 
    // other code here 
    return message; 
} 
+1

Звучит это C++/clr –

+0

Можете ли вы предоставить образец кода? –

+0

Похоже, что вам не хватает декларации вперед и marshal_as для преобразования native в CLI. – Niall

ответ

0
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { 
extern std::string FunctionX(std::string message); 
this->txtMain->Text += msclr::interop::marshal_as<System::String^>(FunctionX("Data")); 
this->txtMain->SelectionStart = this->txtMain->Text->Length; 
} 

Это работает! Спасибо за советы.