Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

DLL средствами MSVC Express 2008   Найти похожие ветки 

 
pasha_golub ©   (2010-03-31 15:00) [0]

Вообщем, собрал библиотеку. Экспортировал фукнции. Пытаюсь подключить по имени - ничего не получается. Раздеребанил внутренности с помощью TDUMP, и вижу нечто такое:

 Sorted by Name:
   RVA      Ord. Hint Name
   -------- ---- ---- ----
   000015B0    1 0000 ?AddEdge@@YAPAPAVEdgeElement@ogdf@@PAVGraph@2@PAPAVNodeElement@2@1@Z
   00001540    2 0001 ?AddNode@@YAPAPAVNodeElement@ogdf@@PAVGraph@2@PAVGraphAttributes@2@NNNN@Z
   00001460    3 0002 ?CreateGraph@@YAPAVGraph@ogdf@@XZ
   000014D0    4 0003 ?CreateGraphAtributes@@YAPAVGraphAttributes@ogdf@@PAVGraph@2@@Z
   000015F0    5 0004 ?DoFMMLayout@@YA_NPAVGraphAttributes@ogdf@@@Z
   000016B0    6 0005 ?DoOptimalHierarchyLayout@@YA_NPAVGraphAttributes@ogdf@@@Z
   00001960    7 0006 ?GetNodeRect@@YA_NPAVGraphAttributes@ogdf@@PAPAVNodeElement@2@PAN222@Z


Это в настройках где-то побеждается? Или это Unicode? Или лучше по старинке mingw использовать?


 
MBo ©   (2010-03-31 15:16) [1]

это name mangling
Для того, чтобы это убрать, объявлять экспортируемые функции с модификатором extern "C" (я не знаю, всегда ли это возможно)


 
Игорь Шевченко ©   (2010-03-31 15:17) [2]

declspec(dllexport) и extern "C" использовал ?


 
Dimka Maslov ©   (2010-03-31 15:21) [3]

Можно просто прописать экпортируемые функции в def файле.


 
pasha_golub ©   (2010-03-31 16:35) [4]

Я не помню какие модификаторы использованы. Сорсы дома. Обязательно уточню.


> Dimka Maslov ©   (31.03.10 15:21) [3]
>
> Можно просто прописать экпортируемые функции в def файле.
>

Я планирую использовать из Delphi данную библиотеку.


 
pasha_golub ©   (2010-04-01 15:31) [5]

Вот такая вот петрушка:

// Приведенный ниже блок ifdef - это стандартный метод создания макросов, упрощающий процедуру
// экспорта из библиотек DLL. Все файлы данной DLL скомпилированы с использованием символа MDDGRAPH_EXPORTS,
// заданного в командной строке. Данный символ не должен быть определен ни в одном проекте,
// использующем данную DLL. Благодаря этому любой другой проект, чьи исходные файлы включают данный файл, видит
// функции MDDGRAPH_API как импортированные из DLL, тогда как данная DLL видит символы,
// определяемые данным макросом, как экспортированные.
#ifdef MDDGRAPH_EXPORTS
#define MDDGRAPH_API __declspec(dllexport)
#else
#define MDDGRAPH_API __declspec(dllimport)
#endif


Ну а объявление функции где-то так:
MDDGRAPH_API ogdf::Graph* CreateGraph();


 
Dimka Maslov ©   (2010-04-02 17:40) [6]


> Я планирую использовать из Delphi данную библиотеку.


Тогда это тоже сработает. Во всех своих сишных библиотеках делаю так и всё прекрасно работает. А вот всякого рода деклспецы и экстерн-Ц как раз и вызывают траблы.


 
Dimka Maslov ©   (2010-04-02 17:43) [7]

Прошу прощения. Траблы вызываются деклспецами, а экстерн-Ц нужен обязательно если экспортируемые функции перечисляются в def-файле.


 
Игорь Шевченко ©   (2010-04-02 19:48) [8]

pasha_golub ©   (01.04.10 15:31) [5]


> Ну а объявление функции где-то так:
> MDDGRAPH_API ogdf::Graph* CreateGraph();


Ну вот это имя и ищи по GetProcAddress:

?CreateGraph@@YAPAVGraph@ogdf@@XZ

или укажи extern "C" MDDGRAPH_API ogdf::Graph* CreateGraph();



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.059 c
15-1262651153
Kerk
2010-01-05 03:25
2010.08.27
Петиция за сохранение MySQL


6-1205426277
Dima
2008-03-13 19:37
2010.08.27
WinAPI + скачивание файла по http (просто)


4-1236677806
Demo_nik
2009-03-10 12:36
2010.08.27
как перехватить функцию копирования


2-1267846652
allrussia
2010-03-06 06:37
2010.08.27
"Пробежка" по константам


2-1270313219
АнатолийПа
2010-04-03 20:46
2010.08.27
Транспортная





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский