Передача структур из VB6 в C++

Узнай цену своей работы

Формулировка задачи:

Всем доброго дня. В общем создаю структуры на VB:
Листинг программы
  1. Public Type STVAR
  2. var1 As Double
  3. var2 As Double
  4. var3 As Double
  5. var4 As Double
  6. var5 As Long
  7. var6 As Long
  8. End Type
  9. Public Type STVAR2
  10. var1 As Long
  11. var2 As Double
  12. var3 As Double
  13. var4 As Double
  14. var5 As Long
  15. var6 As Long
  16. End Type
Объявляю импортируемую функцию:
Листинг программы
  1. Public Declare Function ST_solver Lib "DLLC++.dll" (STV As STVAR, STV2 As STVAR2) As Long
Далее в кнопке пишу:
Листинг программы
  1. Dim STV As STVAR
  2. Dim STV2 As STVAR2
  3. Dim resul As Long
  4. STV.var1 = 10
  5. STV.var3 = 4.6
  6. STV.var6 = 100
  7. STV2.var1 = 20
  8. STV2.var3 = 3.8
  9. STV2.var6 = 200
  10. resul = ST_solver(STV, STV2)
  11. Text1.Text = STV.var4 & vbCrLf & STV2.var4
Код в С++:
Листинг программы
  1. struct STVAR
  2. {
  3. double var1;
  4. double var2;
  5. double var3;
  6. double var4;
  7. long var5;
  8. long var6;
  9. };
  10. struct STVAR2
  11. {
  12. long var1;
  13. double var2;
  14. double var3;
  15. double var4;
  16. long var5;
  17. long var6;
  18. };
  19. extern "C" __declspec(dllexport) long ST_solver(STVAR &STV, STVAR2 &STV2);
  20. extern "C" __declspec(dllexport) long ST_solver(STVAR &STV, STVAR2 &STV2) {
  21. STV.var4 = (STV.var1 + STV.var6) * STV.var3;
  22. STV2.var4 = (STV2.var1 + STV2.var6) * STV2.var3;
  23. return 0;
  24. }
В результате вычисляется неправильно значение во второй структуре: 506 2,91643768245327E-303

Решение задачи: «Передача структур из VB6 в C++»

textual
Листинг программы
  1. #pragma pack(push, 1)
  2. struct STVAR2
  3. {
  4.     long var1;
  5.     double var2;
  6.     double var3;
  7.     double var4;
  8.     long var5;
  9.     long var6;
  10. };
  11. #pragma pack( pop )

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут