Лучший отвечающий
error C2381: exit: переопределение; __declspec(noreturn) отличается

Вопрос
-
Здравствуйте, товарищи. Есть примерно следующее:
#include <glut.h> #include"MainWindow.h" #include"windows.h" using namespace System; [System::Runtime::InteropServices::DllImport("user32.dll", SetLastError = true)] IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); [STAThread] void Display() { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } void Initialize() { glClearColor(0.8, 1.0, 0.6, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-200.0, 200.0, -200.0, 200.0, -5.0, 5.0); } int main(int argc, char ** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(0, 0); GLUT::MainWindow ^form = gcnew GLUT::MainWindow; SetParent((IntPtr)FindWindow("GLUT", NULL), form->getPanelHandle()); form->Show(); glutDisplayFunc(Display); Initialize(); glutMainLoop(); return 0; }
При попытке сборки вылетает C2381. Самое обидное, что я даже ещё не написал ничего толком, а он уже... Помогите пожалуйста.23 мая 2015 г. 0:48
Ответы
-
Извините, Леонтий, но у Вас какой-то "винегрет" получился: и WinAPI и WinForms и OpenGL! Может, на какой-то одной технологии сосредоточиться? Окно, в котором можно рисовать при помощи OpenGL, можно создать и без GLUT (могу ссылку на статьи MSDN дать).
По поводу Вашего вопроса. Скорее всего, в Вашей программе одновременно используется несколько версий библиотеки Си. Нужно, чтобы приложение и все его зависимости (в Вашем случае, glut) ссылались на одну и ту же версию - динамическую, т.к. этого требует .net.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа Леонтий Хачуев 23 мая 2015 г. 13:04
23 мая 2015 г. 8:36
Все ответы
-
Извините, Леонтий, но у Вас какой-то "винегрет" получился: и WinAPI и WinForms и OpenGL! Может, на какой-то одной технологии сосредоточиться? Окно, в котором можно рисовать при помощи OpenGL, можно создать и без GLUT (могу ссылку на статьи MSDN дать).
По поводу Вашего вопроса. Скорее всего, в Вашей программе одновременно используется несколько версий библиотеки Си. Нужно, чтобы приложение и все его зависимости (в Вашем случае, glut) ссылались на одну и ту же версию - динамическую, т.к. этого требует .net.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа Леонтий Хачуев 23 мая 2015 г. 13:04
23 мая 2015 г. 8:36 -
Дайте ссылку, погляжу. Всё подобные объяснения, что я видел до этих пор до меня не очень доходили, может тут получше будет.
23 мая 2015 г. 11:57 -
Вот подборка статей об использовании реализации OpenGL для Windows. Идея, в общем, простая:
1. Выбираете окно, в котором должна отображаться сцена.
2. Настраиваете для этого окна (точнее, для его контекста HDC) формат пикселей (ChoosePixelFormat, SetPixelFormat).
3. Создаете контекст OpenGL (wglCreateContext)
4. Перед началом вывода сцены делаете этот контекст текущим (wglMakeCurrent) и рисуете.
5. Когда контекст больше не нужен - удаляете его (wglDeleteContext).
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
23 мая 2015 г. 12:15 -
Спасибо. Кстати, может Вы знаете как в GLUT создать окно без рамки? (нигде найти не могу)23 мая 2015 г. 12:25
-
Спасибо. Кстати, может Вы знаете как в GLUT создать окно без рамки? (нигде найти не могу)
Никак. Так как программный интерфейс OpenGL кроссплатформенный, в нем нет средств создания окон и обработки событий клавиатуры или мыши. Эта задача возлагается на программный интерфейс ОС (в Windows - это функции с префиксом wgl). А GLUT - это попытка унифицировать создание окна в разных ОС. Поэтому, требовать от нее гибкости в этом вопросе никак нельзя.Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
23 мая 2015 г. 12:44 -
Блин. А что тут можно сделать чтобы окно было без рамки?23 мая 2015 г. 12:54
-
Ну, я, вроде бы, уже описал процедуру рисования в собственном окне без GLUT.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
23 мая 2015 г. 12:56 -
И, кстати, если уж Вам так необходим .NET, из C++/CLI можно вызывать неуправляемые функции WinAPI напрямую (без DllImport).
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
23 мая 2015 г. 13:00 -
Ну хорошо, буду учить.23 мая 2015 г. 13:03