Не могу добавить библиотеку

Автор IbraM, 19.06.13, 23:51:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

IbraM

Не могу написать тестовую библиотеку, чтобы она заработала на компасе.

Вооружение: КОМПАС 13 сп1, Компилятор: g++ из MinGW, Windows 7

shaft.h
#pragma once

#include <windef.h>
#include <windows.h>

#include <libtool.h>

void WINAPI LIBRARYENTRY(unsigned int comm);
char* WINAPI LIBRARYNAME();


shaft.cpp
#include "shaft.h"

void WINAPI LIBRARYENTRY(unsigned int comm)
{
Message("Hello!");
}

char* WINAPI LIBRARYNAME()
{
  return "Самая простая библиотека";
}

Сборка происходит успешно.
Команда компиляции
Цитироватьg++ -I"C:\Program Files\ASCON\KOMPAS-3D V13\SDK\Include" -I"D:\Workspaces\kompas\shaft\include" -O0 -Wall -c -fmessage-length=0 -fpack-struct=1 -MMD -MP -MF"src/shaft.d" -MT"src/shaft.d" -o "src/shaft.o" "../src/shaft.cpp"
Команда линковки
Цитироватьg++ -L"C:\Program Files\ASCON\KOMPAS-3D V13\SDK\Lib" -shared -o "libshaft.rtw"  ./src/shaft.o   -lkAPI2D5
При попытке добавить описание прикладной либы получаю


В чем проблема? Не уж то ли компас сдк не дружит с gcc? Или я где-то что-то забыл? Буду рад, если подскажете в каком направлении копать. СДК перечитывал не раз, вроде противоречий с ним нет, однако, не заводится библиотека.

IbraM

Вопрос решен - тему можно удалять.

TV-child

Эм, а вдруг еще у кого-нибудь возникнут такие же затруднения? Могли бы и написать, как Вы решили эту проблему =).

IbraM

ЦитироватьЭм, а вдруг еще у кого-нибудь возникнут такие же затруднения? Могли бы и написать, как Вы решили эту проблему =).
Имена функций экспортируются с применением С++ декораций, что убирается помещением объявляемых функций в блок extern "C" {}. Но в таблице экспорта вашей библиотеки по-прежнему останется окончание @N, которое убирается передачей линкеру параметра --kill-at. Естественно, касается это все разработчиков, использующих g++.
+ Благодарностей: 1