Немного опоздал к игре, но ваша проблема может заключаться в том, что C ++ Builder украшает экспортированную функцию символом подчеркивания.Утилита командной строки TLIB
должна помочь доказать это (при условии, что tlib все еще поставляется с C ++ Builder)
TLIB mydll.lib, mydll.lst
Посмотрите на полученный файл lst и посмотрите, содержит ли он StartTest
или _StartTest
.LabView, вероятно, ожидает найти функцию без подчеркивания.
Вы можете добавить файл DEF в ваш проект C ++ Builder, который подавит ведущее подчеркивание.Попробуйте это:
Используйте соглашение о вызовах __cdecl вместо __stdcall.
Экспорт простых функций "C".Нет классов C ++ или функций-членов.
- Убедитесь, что у вас есть внешний символ "C" {} вокруг ваших прототипов функций.
Создайте файл DEF, который будет содержать псевдоним экспортируемых функцийна имя, совместимое с Microsoft.Псевдоним имена, чтобы они не содержали подчеркивания.Файл DEF будет выглядеть так:
EXPORTS;Имя MSVC = имя C ++ Builder StartTest = _StartTest Foo = _Foo Bar = _Bar
5- Добавьте файл DEF в проект DLL BCB и перестройте его.
Посмотрите эти древние статьи для более подробной информации: http://bcbjournal.org/articles/vol4/0012/Using_Visual_C_DLLs_with_CBuilder.htm
Обратная статья (создание библиотек DLL C ++ Builder, вызываемых из созданных приложений VC ++) похоронена в этом архиве:
http://www.frasersoft.net/program/bcbdev.zip: /articles/bcbdll.htm.В нем более подробно описывается прием файла DEF, а также некоторые другие параметры.
Обратите внимание, что мой ответ основан на том, что происходило в 1998 году или около того.Возможно, они изменились с тех пор.Если они есть, то инструменты командной строки C ++ Builder impdef, tlib, tdump, а также эквиваленты этих инструментов от Microsoft должны быть в состоянии показать вам, что именно в вашей DLL по сравнению с MSVC.
H ^ 2