﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / C++  / Взаимодействие VB и VCPP. / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 08 Oct 2008 00:25:52 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Взаимодействие VB и VCPP.</title><link>http://www.relib.com/forums/Topic915693-7-1.aspx</link><description>молодец! :)</description><pubDate>Wed, 05 Sep 2007 11:25:29 GMT</pubDate><dc:creator>boombastik</dc:creator></item><item><title>RE: Взаимодействие VB и VCPP.</title><link>http://www.relib.com/forums/Topic915693-7-1.aspx</link><description>Разобрался.&lt;br&gt;Реально в Convert() много наобъявлено статических многомерных массивов, а ограничение на стэк - 1 Мб.&lt;br&gt;Переписал код и теперь память под массивы беру из кучи - всё заработало.</description><pubDate>Tue, 04 Sep 2007 19:59:08 GMT</pubDate><dc:creator>Zerg1</dc:creator></item><item><title>RE: Взаимодействие VB и VCPP.</title><link>http://www.relib.com/forums/Topic915693-7-1.aspx</link><description>DP0("start Convert(...)");&lt;br&gt;это сообщение не выводится в файл лога.&lt;br&gt;значит функа даже не начинает исполняться.&lt;br&gt;мистика...</description><pubDate>Sat, 01 Sep 2007 02:03:56 GMT</pubDate><dc:creator>Zerg1</dc:creator></item><item><title>Взаимодействие VB и VCPP.</title><link>http://www.relib.com/forums/Topic915693-7-1.aspx</link><description>Взаимодействие VB и VCPP.&lt;br&gt;&lt;br&gt;VB60 и VCPP50.&lt;br&gt;&lt;br&gt;Помогите решить проблемку. Есть VB проект и dll на плюсах.&lt;br&gt;Всё бы хорошо и всё работало, пока не появилась проблемка. Очередная новая функа в dll виснет глушняком! Хэлп!&lt;br&gt;Повторяю, dll писать умею, уже много функций работает, а вот тут засада.&lt;br&gt;&lt;br&gt;Итак. Вот код на VB.&lt;br&gt;&lt;br&gt;Public Sub PaintMap()&lt;br&gt;Dim b As String: b = String(2000000, 0)&lt;br&gt;Dim C As Long, i As Long&lt;br&gt;Dim x As Long, y As Long&lt;br&gt;&lt;br&gt;If OptionMapSize(0).Value = True Then&lt;br&gt;    C = 20&lt;br&gt;Else&lt;br&gt;    C = 45&lt;br&gt;    End If&lt;br&gt;MsgBox "calling FM"&lt;br&gt;FillMap C, b, 1, Lang&lt;br&gt;MsgBox b ‘ сюда уже не попадаем, FillMap висит !!!!!!!!!!!!!&lt;br&gt;MsgBox "FM done"&lt;br&gt;i = 1&lt;br&gt;Gmap.ScaleMode = 3&lt;br&gt;Gmap.AutoRedraw = True&lt;br&gt;For y = 0 To 299&lt;br&gt;    For x = 0 To 299&lt;br&gt;        C = 1&lt;br&gt;        i = i + 1&lt;br&gt;        Gmap.PSet (x, y), C&lt;br&gt;        Next x&lt;br&gt;    Next y&lt;br&gt;Gmap.AutoRedraw = False&lt;br&gt;End Sub&lt;br&gt;&lt;br&gt;В VB прототип описан как&lt;br&gt;Public Declare Sub FillMap Lib "gsup.dll" (ByVal countries As Long, ByVal b As String, ByVal names As Long, ByVal language As Long)&lt;br&gt;&lt;br&gt;А кот код функи в dll.&lt;br&gt;&lt;br&gt;EXPORT void __stdcall&lt;br&gt;FillMap(UINT32 C, UBYTE8 *buf, UINT32 names, UINT32 lang)&lt;br&gt;{&lt;br&gt;MAP map(20);&lt;br&gt;buf[0] = 'H';&lt;br&gt;buf[1] = 'B';&lt;br&gt;//return; если тут раскомментарить. то всё OK! Есть воздействие на бэйсик, но мне то надо, чтобы buf передался в Convert и был заполнен там!!!!!!!!!!!!!!!!&lt;br&gt;DP0("FM:0");// это функа отладочной печати&lt;br&gt;map.SetC(C);&lt;br&gt;DP0("FM:1");&lt;br&gt;map.UnpackMap(msg.map);&lt;br&gt;DP0("FM:2");&lt;br&gt;map.Convert(NULL, buf, names, lang); // вот тут зависон! Трёшка из следующей строчки никогда не печатается.&lt;br&gt;DP0("FM:3");&lt;br&gt;}&lt;br&gt;&lt;br&gt;А вот что такое Convert. Вообще-то, функа – бетон, вне dll – работает на ура, а тут даже не хрюкает. Полная смерть. Смотрите сами. Вариант обрезанный, но и он виснет, на печать ничего не выходит. Что делать?&lt;br&gt;&lt;br&gt;void&lt;br&gt;MAP::Convert(BYTE8 *fn, UBYTE8 *buf, UINT32 names, UINT32 l)&lt;br&gt;{&lt;br&gt;DP0("start Convert(...)");&lt;br&gt;buf[2] = 'L';&lt;br&gt;buf[3] = 'M';&lt;br&gt;return;&lt;br&gt;}&lt;br&gt;&lt;br&gt;Даже непонятно, где вообще зависон происходит. Наверное, я чего-то не знаю про dll. Помогите.&lt;br&gt;</description><pubDate>Sat, 01 Sep 2007 02:01:50 GMT</pubDate><dc:creator>Zerg1</dc:creator></item></channel></rss>