Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Создание и импорт dll в С++ Builder 2010


Автор: vinceras 25.2.2010, 23:31
Только приступил к освоению c++ и наткнулся на следующую проблему. Для эксперимента использовал пример из книги. Создал dll. Ниже её код:

1.
Код

//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
//   Important note about DLL memory management when your DLL uses the
//   static version of the RunTime Library...и бла,бла,бла - комменты билдера
//---------------------------------------------------------------------------
 
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        return 1;
}
__declspec (dllexport) double Sin2( double a)
{
        return sin(2*a);
}
//---------------------------------------------------------------------------


2. Откомпилировал, в папке debug появилась dll и lib.
3. Создал новый проект. В заголовочном фале прописал:

__declspec (dllimport) double Sin2 (double a);

4. в обработчике "при создании формы" вызываю её:

Код

void __fastcall TForm1::FormCreate(TObject *Sender)
{
        Sin2(3.14);
}


4. Добавляю в проект lib-файл.
5. Компилирую и получаю ошибку. На вкладке build окна messages:

Checking project dependencies...
Compiling ProjectMyMath.cbproj (Debug configuration)
[ILINK32 Error] Fatal: Unable to open file 'ⱼ&洎瞅琈瞅驊眯冊Ÿ눺E.OBJ'
Failed
Elapsed time: 00:00:04.1

6. На вкладке output окна messages:

Build started 25.02.2010 22:16:22.
__________________________________________________
Project "C:\Users\Администратор\Documents\RAD Studio\Projects\MyMath\ProjectMyMath.cbproj" (Make target(s)):
Target MakeObjs:
Target _CppDepCheck:
Skipping: ProjectMyMath.cpp
Modified: UnitMyMath.cpp
Target CppCompile:
Target _CppCoreCompile:
c:\program files\embarcadero\rad studio\7.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL;USEPACKAGES -I"C:\Program Files\Embarcadero\RAD Studio\7.0\include\boost_1_39\boost\tr1\tr1";"c:\p rogram files\embarcadero\rad studio\7.0\include";"c:\program files\embarcadero\rad studio\7.0\include\dinkumware";"c:\program files\embarcadero\rad studio\7.0\include\vcl";"C:\Program Files\Embarcadero\RAD Studio\7.0\include\boost_1_39";"c:\program files\embarcadero\rad studio\7.0\ObjRepos\Cpp";"c:\program files\embarcadero\rad studio\7.0\include\Indy10";"c:\program files\embarcadero\rad studio\7.0\RaveReports\Lib" -y -Q -k -r- -c -tWM -tW -C8 -oDebug\UnitMyMath.obj -w-par -Od -v -vi- -H=Debug\ProjectMyMath.pch -H UnitMyMath.cpp 
Target _PerformLink:
c:\program files\embarcadero\rad studio\7.0\bin\ilink32.exe -LDebug;"c:\program files\embarcadero\rad studio\7.0\lib\debug"ebug;"c:\program files\embarcadero\rad studio\7.0\lib";"c:\program files\embarcadero\rad studio\7.0\lib\obj";"c:\program files\embarcadero\rad studio\7.0\lib\psdk";"c:\program files\embarcadero\rad studio\7.0\lib";"c:\program files\embarcadero\rad studio\7.0\lib\psdk";"c:\program files\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files\embarcadero\rad studio\7.0\RaveReports\Lib";"C:\Users\Public\Docum ents\RAD Studio\7.0\DCP" -jDebug;"c:\program files\embarcadero\rad studio\7.0\lib\debug"ebug;"c:\program files\embarcadero\rad studio\7.0\lib";"c:\program files\embarcadero\rad studio\7.0\lib\obj";"c:\program files\embarcadero\rad studio\7.0\lib\psdk";"c:\program files\embarcadero\rad studio\7.0\lib";"c:\program files\embarcadero\rad studio\7.0\lib\psdk";"c:\program files\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files\embarcadero\rad studio\7.0\RaveReports\Lib";"C:\Users\Public\Docum ents\RAD Studio\7.0\DCP" -lDebug -v -GA"C:\Users\836D~1\AppData\Local\Temp\vfs611.tmp"= "C:\Users\Администратор\Documents\RAD Studio\Projects\MyMath\ProjectMyMath.res" -GA"C:\Users\836D~1\AppData\Local\Temp\vfs622.tmp"= "C:\Users\Администратор\Documents\RAD Studio\Projects\MyMath\UnitMyMath.dfm" -aa -V5.0 -G8 c0w32 rtl.bpi vcl.bpi memmgr.lib sysinit.obj Debug\UnitMyMath.obj Debug\ProjectMyMath.obj , Debug\ProjectMyMath.exe , Debug\ProjectMyMath.map , MyMath.lib import32.lib cp32mti.lib , , "C:\Users\836D~1\AppData\Local\Temp\vfs611.tmp " 
c:\program files\embarcadero\rad studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Fatal: Unable to open file 'ⱼ&洎瞅琈瞅驊眯冊Ÿ눺E.OBJ'
Done building target "_PerformLink" in project "ProjectMyMath.cbproj" -- FAILED.
Done building project "ProjectMyMath.cbproj" -- FAILED.
Build FAILED.
c:\program files\embarcadero\rad studio\7.0\Bin\CodeGear.Cpp.Targets(2175,3): error : Fatal: Unable to open file 'ⱼ&洎瞅琈瞅驊眯冊Ÿ눺E.OBJ'
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:03.94


Так и не нашёл решение проблемы. Если кто знает, прошу помочь. Очень надо! Буду очень благодарен!

Автор: xvr 26.2.2010, 12:59
А что за 'ebug' в конце строки вот тут -
Цитата

Target _PerformLink:
c:\program files\embarcadero\rad studio\7.0\bin\ilink32.exe -LDebug;"c:\program files\embarcadero\rad studio\7.0\lib\debug"ebug;

Похоже битый файл проекта

У BCB (еще со времен 1.0) периодически слетали настройки путей в проекте, видимо embarcadero тут ничего не поменяло  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)