![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 12.04.2012
Сообщений: 2
|
![]()
Здравствуйте.
Ситуация: Собрал простой проект Dll. Загружаю библиотеку на этапе выполнения. Есть функция, которая создает класс с данными. Есть нужда создать указатель на массив unsigned short нужного размера при помощи new. Память не выделяется. Хотя обычные переменные создаются легко. New валится... Код: header либы: #ifdef CUBE_EXPORTS #define CUBE_API __declspec(dllexport) #else #define CUBE_API __declspec(dllimport) #endif #include "Mesh.h" // This class is exported from the Cube.dll Mesh* mPrim0; extern CUBE_API Mesh* createCube(const char* name, float size); extern void XQuad(float halfSide,int i,int side,Mesh* mPrim); extern void YQuad(float halfSide,int i,int side,Mesh* mPrim); extern void ZQuad(float halfSide,int i,int side,Mesh* mPrim); cpp: (XQuad,YQuad,ZQuad не пишу) #include "stdafx.h" #include "Cube.h" Mesh* createCube(const char* name, float size) { mPrim0 = new Mesh(); mPrim0->Name = name; mPrim0->numFaces = 12; mPrim0->numVertex = 36; mPrim0->Vertex = new CUSTOMVERTEX[mPrim0->numVertex]; const float halfEdge = size / 2; int i = 0; //верхняя грань XQuad(halfEdge, i += 6,1,mPrim0); YQuad(halfEdge, i += 6,1,mPrim0); XQuad(halfEdge, i += 6,-1,mPrim0); YQuad(halfEdge, i += 6,-1,mPrim0); ZQuad(halfEdge, i += 6, 1,mPrim0); ZQuad(halfEdge, i += 6,-1,mPrim0); mPrim0->Indexes = new unsigned short[mPrim0->numFaces * 3];//fail for (int n = 0; n < mPrim0->numVertex; n++) { mPrim0->Indexes[n] = n; } return mPrim0; } загружаю так: { typedef Mesh* (*createCubeType)(const char*,float); //typedef void (*createCubeType)(const char*,float); HMODULE hLib=LoadLibrary("Cube.dll"); createCubeType createCube; createCube = (createCubeType)GetProcAddress(hLib ,"createCube"); Mesh* mMesh = (*createCube)("Simple Cube",80); ... return true; } dll main удалил Разъясните, что я делаю не так. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 12.04.2012
Сообщений: 2
|
![]()
Извините. Разобрался. Утечка памяти, поскольку нужно было
//верхняя грань XQuad(halfEdge, i,1,mPrim0); YQuad(halfEdge, i += 6,1,mPrim0); XQuad(halfEdge, i += 6,-1,mPrim0); Вопрос решен. Тему можно удалить, если не жалко. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка пикчи из Dll | t2skler | Общие вопросы Delphi | 7 | 18.02.2011 20:42 |
[DLL] Загрузка и выгрузка dll в/из чужого процесса | Человек_Борща | Win Api | 4 | 28.02.2010 17:47 |
Загрузка dll | Колючка* | Общие вопросы Delphi | 3 | 12.02.2010 19:45 |
загрузка .dll | blackstersl | Общие вопросы Delphi | 1 | 29.04.2009 21:53 |
Загрузка DLL | Hollander | Общие вопросы Delphi | 3 | 21.05.2007 20:19 |