powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с dll
6 сообщений из 6, страница 1 из 1
проблема с dll
    #32442464
DimBV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня есть dll в которой записан клас и он использует структуру которая тамже объявлена нополучается фигня все работает но при передаче структури
данние в ней путаются или равны 0
может кто подскажет что нетак а то уже надоело на одном месте сидеть
заранее спасиба
...
Рейтинг: 0 / 0
проблема с dll
    #32442744
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код кинь сюда посмотреть.
...
Рейтинг: 0 / 0
проблема с dll
    #32443746
DimBV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот код здесь он несовсем в оригинале я его немного пытался исправить пытался разные варианты но ничего неполучилось
//-------------------------------------------------
#ifndef Unit_3D_OperationH
//#define Unit_3D_OperationH
#ifndef DynamicClassH
#define DynamicClassH
//---
#include <Vector.h>
#include <Algorithm.h>
#include <iostream.h>
#include<functional.h>//========================
#include "..\UNIT 511\Ks_TLB.h"
#include "..\UNIT 511\ldefin2d.h"
#include "..\UNIT 511\ldefin3d.h"
//#include ".\UNIT\KsLoft.h"

//---

#include <Dialogs.hpp>
#include <stdlib.h>

//---------------------------------------------------------------------------

//#ifdef __cplusplus
//extern "C" {
//#endif

//#ifdef Unit_3D_OperationH
//#define IMPORT_EXPORT __declspec(dllexport)
//#else
//#define IMPORT_EXPORT __declspec(dllimport)
//#endif

/*class Shield
{
public:
IMPORT_EXPORT void __stdcall Drob(char &Key,AnsiString &Text);
IMPORT_EXPORT void __stdcall Real(char &Key,AnsiString &Text);
IMPORT_EXPORT void __stdcall OtricDrob(char &Key,TEdit* &Ed);
IMPORT_EXPORT int __stdcall ProwMinMax(double &Min,double &Max,double &Cheslo,AnsiString Message);
}; */
//------------------------------------------------------------------------------
__declspec(dllexport)struct TThin {
bool Thin;
short ThinDirect; // Òèïû íàïðàâëåíèé
// dtNormal = 0 ïðÿìîå íàïðàâëåíèå (íàðóæó)
// dtReverse = 1 îáðàòíîå íàïðàâëåíèå (âíóòðü)
// dtBoth = 2 â îáå ñòîðîíû
// dtMiddlePlane= 3 îò ñðåäíåé ïëîñêîñòè
double normalThickness;
double reverseThickness;
};

struct TSideParam {
//bool forward; // íàïðàâëåíèå âûäàâëèâàíèÿ (TRUE - ïðÿìîå íàïðàâëåíèå)
short type_n; // òèï âûäàâëèâàíèÿ Â ïðÿìîì íàïðàâëåíèè
short type_r; // òèï âûäàâëèâàíèÿ Â îáðàòíîì íàïðàâëåíèè
// etBlind = 0 ñòðîãî íà ãëóáèíó
// etThroughAll = 1 ÷åðåç âñþ äåòàëü
// etUpToVertexTo = 2 íà ðàññòîÿíèå äî âåðøèíû
// etUpToVertexFrom = 3 íà ðàññòîÿíèå çà âåðøèíó
// etUpToSurfaceTo = 4 íà ðàññòîÿíèå äî ïîâåðõíîñòè
// etUpToSurfaceFrom = 5 íà ðàññòîÿíèå çà ïîâåðõíîñòü
// etUpToNearSurface = 6 äî áëèæàéøåé ïîâåðõíîñòè
double depth_n; // ãëóáèíà âûäàâëèâàíèÿ Â ïðÿìîì íàïðàâëåíèè
double depth_r; // ãëóáèíà âûäàâëèâàíèÿ Â îáðàòíîì íàïðàâëåíèè
double draftValue_n; // âåëè÷èíà óãëà óêëîíà  ïðÿìîì íàïðàâëåíèè
double draftValue_r; // âåëè÷èíà óãëà óêëîíà  îáðàòíîì íàïðàâëåíèè
bool draftOutward_n; // óêëîí íàðóæó Â ïðÿìîì íàïðàâëåíèè
bool draftOutward_r; // óêëîí íàðóæó Â îáðàòíîì íàïðàâëåíèè
double ang_n; // âåëè÷èíà óãëà âðàùåíèÿ â ïðÿìîì íàïðàâëåíèè
double ang_r; // âåëè÷èíà óãëà âðàùåíèÿ â îáðàòíîì íàïðàâëåíèè
bool LoftClosed; //ïðèçíàê çàìêíóòîñòè òðàåêòîðèè ëîôòèíãà
bool autoPath; //ïðèçíàê àâòîìàòè÷åñêîãî ôîðìèðîâàíèÿ òðàåêòîðèè
short directionType; // Òèïû íàïðàâëåíèé
// dtNormal = 0 ïðÿìîå íàïðàâëåíèå
// dtReverse = 1 îáðàòíîå íàïðàâëåíèå
// dtBoth = 2 â îáå ñòîðîíû
// dtMiddlePlane = 3 îò ñðåäíåé ïëîñêîñòè
};
//---------------Ïàðàìåòðû ñïèðàëè----------------------------------------------
__declspec(dllexport)struct TSpiralParam
{
short buildMode; //ïî ÷åì ñòðîèòü
bool buildDir; //íàïðàâëåíèå ñïèðàëè
bool turnDir; //íàïðàâëåíèå âèòêîâ
double diam; //äèàìåòð
double height; //âèñîòà
double turn; //êîëè÷åñòâî âèòêîâ
double Xc; //ÌÒÐ ñïèðàëè
double Yc; //
//-----------Ïàðàìåòðè êîíè÷åñêîé ñïèðàëè------------
double initialdiam; //íà÷àëüíûé äèàìåòð
double terminaldiam;//êîíå÷íûé äèàìåòð
};
//----------------Ïàðàìåòðû êîïèè ïî ñåòêå -------------------------------------
__declspec(dllexport)struct TMeshCopy
{
double angle1; //óãîë íàêëîíà
double count1; //êîëè÷åñòâî
bool factor1; //ïîëíûé øàã
double step1; //øàã

double angle2; //óãîë íàêëîíà
double count2; //êîëè÷åñòâî
bool factor2; //ïîëíûé øàã
double step2; //øàã

bool insideFlag;
};
//----------------Ïîêàçàòü èëè ñêðèòü êîíñòðóêòèâíûå åëåìåíòû ------------------
__declspec(dllexport)struct TConstrElement
{
bool hidden;
};
//---------------- Öâåòà -------------------------------------------------------
__declspec(dllexport)struct TDetColour
{
double transparency;
double ambient;
double diffuse;
double emission;
double shininess;
double specularity;
};
//------------------------------------------------------------------------------
__declspec(dllexport) class TEskiz
{
private:
ksSketchDefinition * sketchDef;
public:
ksPart * part;
ksDocument2D * Eskiz;
ksEntity * ksEskiz ;
ksEntity * basePlane;
ksEntity * baseAxis;
TConstrElement Constr;

__fastcall TEskiz(ksDocument3D * doc);
/*{
part = (ksPart*)doc->GetPart(pNew_Part); // íîâûé êîìïîíåíò
basePlane = (ksEntity*)part->GetDefaultEntity( o3d_planeXOY);
baseAxis = (ksEntity*)part->GetDefaultEntity( o3d_pointCS);
Constr.hidden = true;
} */
int __fastcall CreateEskiz(void);
int __fastcall CloseEskiz(void);
int __fastcall SetBasePlane(short ObjType); //çàäàòü áàçîâóþ ïëîñêîñòü
int __fastcall SetOffsetPlane(double Offset,short TypeBasePlane,bool direction);//ïëîñêîñòü íà ðàñòîÿíèè îò äðóãîé
int __fastcall SetExistPlane(double X,double Y,double Z); //íà ðàñòîÿíèè îò ïëîñêîñòè íà äåòàëå
int __fastcall SetOffsetExistPlane(double Offset,double X,double Y,double Z,bool direction); //÷òîòî âðîäå ïðåäûäóùåé
int __fastcall Axis2Planes(double X1,double Y1,double Z1,double X2,double Y2,double Z2); //îñü î äâóì ïëîñêîñòÿì
int __fastcall GetPlane3Point(double X1,double Y1,double Z1,double X2,double Y2,double Z2,double X3,double Y3,double Z3);//ïëîñêîñòü ÷åðåç 3 âåðøèíû
int __fastcall GetPlane3Point(double Arr[]);
int __fastcall GetPlaneToAngle(double angle,double XP,double YP,double ZP,double XE,double YE,double ZE); //ïëîñêîñòü ïîä óãëîì
int __fastcall AxisOperation();
int __fastcall GetAxis2Points(double X1,double Y1,double Z1,double X2,double Y2,double Z2);
int __fastcall GetAxisEdge(double X,double Y,double Z);
};

__declspec(dllexport)class T3DOperation
{
private:
ksEntityCollection * Clip;
ksEntityCollection * EdgeFase;
ksEntityCollection * Eskizs;
//----------
//bool forward; // íàïðàâëåíèå âûäàâëèâàíèÿ (TRUE - ïðÿìîå íàïðàâëåíèå)
//TSideParam SideParam;
//---------
public:
TSideParam SideParam;
TSpiralParam SpiralParam;
TMeshCopy Mesh;
TThin Thin;
TDetColour Coler;

__fastcall T3DOperation(void)
{
// Çàïîëíåíèå ñòðóêòóðû ïàðàìåòðîâ îïåðàöèé ïî óìîë÷àíèþ

SideParam.directionType = dtBoth; // Ôîðìîîáðàçóþùåå Íàïðàâëåíèå
// Îïåðàöèè âûäàâëèâàíèÿ
SideParam.depth_n = 50; //Ãëóáèíà âûäàâëèâàíèÿ
SideParam.draftOutward_n = false; //Óêëîí âîâíóòðü
SideParam.draftValue_n = 0; //Óãîë óêëîíà â ãðàäóñàõ
SideParam.type_n = etBlind; //Òèï âûäàâëèâàíèÿ
SideParam.depth_r = 50; //Ãëóáèíà âûäàâëèâàíèÿ
SideParam.draftOutward_r = false; //Óêëîí âîâíóòðü
SideParam.draftValue_r = 0; //Óãîë óêëîíà â ãðàäóñàõ
SideParam.type_r = etBlind; //Òèï âûäàâëèâàíèÿ
// Îïåðàöèè âðàùåíèÿ
SideParam.ang_n = 180; // Óãîë äëÿ îïåðàöèé âðàùåíèÿ
SideParam.ang_r = 180; // Óãîë äëÿ îïåðàöèé âðàùåíèÿ
//Îïåðàöèè ïî ñå÷åíèÿì
SideParam.LoftClosed = false; //ïðèçíàê çàìêíóòîñòè òðàåêòîðèè ëîôòèíãà
SideParam.autoPath = true; //ïðèçíàê àâòîìàòè÷åñêîãî ôîðìèðîâàíèÿ òðàåêòîðèè

// Çàïîëíåíèå ñòðóêòóðû ïàðàìåòðîâ òîíêîé ñòåíêè ïî óìîë÷àíèþ
Thin.Thin = false; // Òîíêàÿ ñòåíêà åñòü
Thin.ThinDirect = 2; // Íàïðàâëåíè òîíêîé ñòåíêè
Thin.normalThickness = 1; // Òîëùèíà â ïðÿìîì íàïðàâëåíèè
Thin.reverseThickness = 1; // Òîëùèíà â îáðàòíîì íàïðàâëåíèè
//-----------------
Clip = NULL;
EdgeFase = NULL;
Eskizs = NULL;
// VerteX = NULL;
//-----------------
//Ñïèðàëü
SpiralParam.buildDir = true;
SpiralParam.buildMode= 2;
SpiralParam.diam = 50;
SpiralParam.turnDir = true;
SpiralParam.height = 40;
SpiralParam.turn = 10;
SpiralParam.Xc = 0;
SpiralParam.Yc = 0;
SpiralParam.initialdiam = 10;
SpiralParam.terminaldiam = 30;
//Êîïèÿ ïî ñåòêå
Mesh.angle1 = 0;
Mesh.count1 = 3;
Mesh.factor1 = false;
Mesh.step1 = 10;

Mesh.angle2 = 90;
Mesh.count2 = 1;
Mesh.factor2 = false;
Mesh.step2 = 10;
Mesh.insideFlag = true;
//-öâåòà
Coler.transparency = 1;
Coler.ambient = 0.8;
Coler.diffuse = 0.8;
Coler.emission = 0.5;
Coler.shininess = 0.2;
Coler.specularity = 0.4;
} ;
__property TSideParam SideParamA =
{
write = SideParam , read = SideParam

};
/*
write = directionType;// = dtBoth; // òèï âûäàâëèâàíèÿ Â ïðÿìîì íàïðàâëåíèè
// èè âûäàâëèâàíèÿ // òèï âûäàâëèâàíèÿ Â îáðàòíîì íàïðàâëåíèè
write = depth_n;// = 50; // etBlind = 0 ñòðîãî íà ãëóáèíó
write = draftOutward_n;// = false; // etThroughAll = 1 ÷åðåç âñþ äåòàëü
write = draftValue_n;// = 0; // etUpToVertexTo = 2 íà ðàññòîÿíèå äî âåðøèíû
write = type_n;// = etBlind // etUpToVertexFrom = 3 íà ðàññòîÿíèå çà âåðøèíó
write = depth_r;// = 50; // etUpToSurfaceTo = 4 íà ðàññòîÿíèå äî ïîâåðõíîñòè
write = draftOutward_r;// = false; // etUpToSurfaceFrom = 5 íà ðàññòîÿíèå çà ïîâåðõíîñòü
write = draftValue_r;// = 0; // etUpToNearSurface = 6 äî áëèæàéøåé ïîâåðõíîñòè
write = type_r;// = etBlind // ãëóáèíà âûäàâëèâàíèÿ Â ïðÿìîì íàïðàâëåíèè
// è âðàùåíèÿ // ãëóáèíà âûäàâëèâàíèÿ Â îáðàòíîì íàïðàâëåíèè
write = ang_n;// = 180; // âåëè÷èíà óãëà óêëîíà  ïðÿìîì íàïðàâëåíèè
write = ang_r;// = 180; // âåëè÷èíà óãëà óêëîíà  îáðàòíîì íàïðàâëåíèè
// ïî ñå÷åíèÿì // óêëîí íàðóæó  ïðÿìîì íàïðàâëåíèè
write = LoftClosed;// = false; // óêëîí íàðóæó Â îáðàòíîì íàïðàâëåíèè
write = autoPath;// = true; // âåëè÷èíà óãëà âðàùåíèÿ â ïðÿìîì íàïðàâëåíèè
*/

int __fastcall BaseExtrusion(ksDocument3D *doc,TEskiz *Eskiz); //áàçîâàÿ îïåðàöèÿ âûäàâëèâàíèÿ
int __fastcall CutExtrusion(ksDocument3D *doc,TEskiz *Eskiz); // 26 âûðåçàòü âûäàâëèâàíèåì
int __fastcall BossExtrusion(ksDocument3D *doc,TEskiz *Eskiz); // 25 ïðèêëåèâàíèå âûäàâëèâàíèåì

int __fastcall BaseRotate(ksDocument3D *doc,TEskiz *Eskiz,bool toroidShape); // 27 áàçîâàÿ îïåðàöèÿ âðàùåíèÿ
int __fastcall CutRotate(ksDocument3D *doc,TEskiz *Eskiz,bool toroidShape); // 29 âûðåçàòü âðàùåíèåì
int __fastcall BossRotate(ksDocument3D *doc,TEskiz *Eskiz,bool toroidShape); // 28 ïðèêëåèâàíèå âðàùåíèåì

int __fastcall BaseLoft(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray); // 30 áàçîâàÿ îïåðàöèÿ âðàùåíèÿ
int __fastcall BaseLoft(ksDocument3D *doc,TEskiz *Eskiz);
int __fastcall CutLoft(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray); // 32 âûðåçàòü âðàùåíèåì
int __fastcall CutLoft(ksDocument3D *doc,TEskiz *Eskiz);
int __fastcall BossLoft(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray); // 31 ïðèêëåèâàíèå âðàùåíèåì
int __fastcall BossLoft(ksDocument3D *doc,TEskiz *Eskiz);

int __fastcall BaseKinematik(ksDocument3D *doc,TEskiz *Eskiz/*,ksEntityCollection *PartArray*/,short type); // 47 âûðåçàòü êèíåìàòè÷åñêè
int __fastcall BaseKinematik(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray,short type); // 47 âûðåçàòü êèíåìàòè÷åñêè
int __fastcall BossKinematik(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray,short type); // 46 ïðèêëåèíòü êèíåìàòè÷åñêè
int __fastcall BossKinematik(ksDocument3D *doc,TEskiz *Eskiz,short type); // 46 ïðèêëåèíòü êèíåìàòè÷åñêè
int __fastcall CutKinematik(ksDocument3D *doc,TEskiz *Eskiz,ksEntityCollection *PartArray,short type);
int __fastcall CutKinematik(ksDocument3D *doc,TEskiz *Eskiz,short type);
///--------------------------------------------------------------------------------
int __fastcall SpLine(ksDocument3D *doc,TEskiz *Eskiz,double Arr[],int Syze);
int __fastcall PolyLine(ksDocument3D *doc,TEskiz *Eskiz,double Arr[],int Syze);
int __fastcall SpLine(ksDocument3D *doc,TEskiz *Eskiz,vector<double> Arr);
int __fastcall PolyLine(ksDocument3D *doc,TEskiz *Eskiz,vector<double> Arr);
int __fastcall Spiral(ksDocument3D *doc,TEskiz *Eskiz); //îïåðàöûÿ ñïèðàëü öûëèíäðè÷åñêàÿ :-))
int __fastcall ConicSpiral(ksDocument3D *doc,TEskiz *Eskiz); // 54 Êîíè÷åñêàÿ ñïèðàëü
int __fastcall CreateFaska(ksDocument3D *doc,TEskiz *Eskiz,double a,double b); // 33 îïåðàöèÿ "ôàñêà"
int __fastcall CreateFille(ksDocument3D *doc,TEskiz *Eskiz,double radius); // 34 îïåðàöèÿ "ñêðóãëåíèÿ"
int __fastcall CutByPlane(ksDocument3D *doc,TEskiz *Eskiz,bool direction); //ñå÷åíèå ïëîñêîñòüþ
int __fastcall CutByEskiz(ksDocument3D *doc,TEskiz *Eskiz,bool direction); //ñå÷åíèå åñêèçîì
int __fastcall MirrorAllOperation(ksDocument3D *doc,TEskiz *Eskiz); //îòîáðàçèòü ñåìåòðè÷íî âñå
int __fastcall MirrorOperation(ksDocument3D *doc,TEskiz *Eskiz); //ñèìåòðèÿ
int __fastcall ShellOperation(ksDocument3D *doc,TEskiz *Eskiz,double a,bool Thin); //îïåðàöûÿ îáîëî÷êà
int __fastcall MeshCopy(TEskiz* Esk,int Kol,double Angle,bool direct); //êîïèÿ ïî ñåòêå
//-------------------Ðàáîòà ñ ìàñèâàìè åëåìåíòîâ------------------------
int __fastcall AddLastObjToClip(TEskiz*Esk); //äîáàâèòü ïîñëåäíèé îáåêò
int __fastcall AddToCollEdgeBypoint(float x , float y, float z, TEskiz*Esk); //äîáàâèòü ãðàíü
int __fastcall AddToCollFaceBypoint(float x , float y, float z, TEskiz*Esk); //äîáàâèòü ïëîñêîñòü
int __fastcall AddEskiz(TEskiz*Esk); //äîáàâèòü åñêèç åñêèç

int __fastcall ClearEdgeFase(void);
int __fastcall ClearEskizs(void); //ïî÷èñòèòü ìàñèâ
//-------------------Ðàáîòà ñ òåêñòîâûì ôàéëîì--------------------------
// int __fastcall OpenTextFile(char * name,ksDocument3D *doc);
int __fastcall CircularCopy(TEskiz* Esk,int Kol,double Angle,bool direct); // 36 îïåðàöèÿ êîïèðîâàíèÿ ïî êîíöåíòðè÷åñêîé ñåòêå
//int AxisOperation(TEskiz* Esk); //îñü îïåðàöèè
//-----------------------Îïåðàöèè ñ ñáîðêàìè----------------------------
int __fastcall AddBaseModel(char* FileName,ksDocument3D * doc);
int __fastcall MoveModel(ksDocument3D * doc,double x,double y,double z,double detal);
int __fastcall SetColorDet(ksDocument3D * doc,AnsiString Name,Byte red = 128,Byte green = 128,Byte dlue = 128);
};

//------------------------------------------------------------------------------
//#ifdef __cplusplus
//}
//#endif


#endif
...
Рейтинг: 0 / 0
проблема с dll
    #32444059
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Капец :)
А порезать немного ты его не мог? Запутался я там...

Вобщем какие есть вообще идеи:

1. Передавать указатель на структуру.
2. Если уж совсем ничё не получается, написать пару функцаек: get & put, c параметром: указатель на структуру. И через него общаться.

С прямым обращением в область памяти видимо не получится. (Надо подумать, почему)
...
Рейтинг: 0 / 0
проблема с dll
    #32444324
DimBV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще какие будут советы ?
...
Рейтинг: 0 / 0
проблема с dll
    #32456837
Геша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сложно все это ..
в С++ без разницы , что класс что структура в структуре тож можно конструктор сделать ..
в DLL отсутствует стек .. те статические переменные девать некуда .. надо использовать выделение памяти (new || malloc)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с dll
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]