Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2012, 20:11   #1
FireOfHell
Новичок
Джуниор
 
Аватар для FireOfHell
 
Регистрация: 12.04.2012
Сообщений: 2
По умолчанию Загрузка DLL - не работает new

Здравствуйте.
Ситуация: Собрал простой проект 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 удалил
Разъясните, что я делаю не так.
FireOfHell вне форума Ответить с цитированием
Старый 13.04.2012, 14:30   #2
FireOfHell
Новичок
Джуниор
 
Аватар для FireOfHell
 
Регистрация: 12.04.2012
Сообщений: 2
По умолчанию

Извините. Разобрался. Утечка памяти, поскольку нужно было
//верхняя грань
XQuad(halfEdge, i,1,mPrim0);
YQuad(halfEdge, i += 6,1,mPrim0);
XQuad(halfEdge, i += 6,-1,mPrim0);
Вопрос решен. Тему можно удалить, если не жалко.
FireOfHell вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка пикчи из 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