Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
megabax
3 / 3 / 0
Регистрация: 06.08.2009
Сообщений: 214
#1

При компиляции DLL-проекта не создается DLL-ка - C++

18.10.2014, 16:15. Просмотров 654. Ответов 3
Метки нет (Все метки)

Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// test.cpp: определяет экспортированные функции для приложения DLL.
//
 
#include "stdafx.h"
 
#include <windows.h>
#include <process.h>
 
// в случае вызова функций из LUA-кода во внешней DLL
// необходимо определить эти константы до подключения заголовочных файлов LUA
#define LUA_LIB
#define LUA_BUILD_AS_DLL
 
// заголовочные файлы LUA из дистрибутива LUA
extern "C" {
#include "contrib/lauxlib.h"
#include "contrib/lua.h"
}
 
// стандартная точка входа для DLL
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    return TRUE;
}
 
static int forLua_GetCurrentThreadId(lua_State *L) {
    // возвращаем одно значение, полученное от Win API функции
    lua_pushinteger(L, GetCurrentThreadId());
    return(1);
}
 
static int forLua_SummTwoNumbers(lua_State *L) {
    // получаем первый и второй параметры вызова функции из стека с проверкой каждого на число
    double d1 = luaL_checknumber(L, 1);
    double d2 = luaL_checknumber(L, 2);
 
    // помещаем в стек результат умножения
    lua_pushnumber(L, d1 + d2);
 
    return(1);  // эта функция возвращает одно значение
}
 
// регистрация реализованных в dll функций, чтобы они стали "видимы" для LUA
 
static struct luaL_reg ls_lib[] = {
    {"GetCurrentThreadId", forLua_GetCurrentThreadId},
    {"SummTwoNumbers", forLua_SummTwoNumbers},
    {NULL, NULL}
};
 
extern "C" LUALIB_API int luaopen_luacdll(lua_State *L) {
    luaL_openlib(L, "dllmain", ls_lib, 0);
    return 0;
}
Никаких ошибок не выдает, но в выходном каталоге не появляется файл dllmai.dll (вообще никакая DLL-ка не появляется). Хотя появляется файл dllmain.obj
Подскажите пожалуйста, как лечить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2014, 16:15     При компиляции DLL-проекта не создается DLL-ка
Посмотрите здесь:
Visual C++ Ошибки при компиляции Dll
Ошибки декларирования функций при компиляции DLL C++ WinAPI
Warning при компиляции при чтении из msado15.dll C++
Visual C++ Ошибка при компиляции программы: отсутствует mfc120ud.dll
DLL hijacking или подмена DLL при открытии .docx C++ COM
Не создается .dll Visual C++
C++ Builder Ошибка при компиляции: "Access violation at adress 32F7E924 in module 'CC32150MT.DLL'"
Из .exe проекта сделать .dll Visual C++
Некорректная работа проекта использующего dll Visual C++
C++ Не компилируется 64-битная DLL из 32-битного проекта
Добавление консоли для dll проекта C++ WinAPI
C++ Как из проекта .dll сделать консольное приложение?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
18.10.2014, 17:44     При компиляции DLL-проекта не создается DLL-ка #2
Насколько помню, "выходной" каталог в VS может назначаться более причудливо, чем хотелось бы. И обычно он не совпадает с тем, куда кладутся .obj-файлы. Так что для начала можно просто тщательнее поискать или более внимательно почитать build log.
megabax
3 / 3 / 0
Регистрация: 06.08.2009
Сообщений: 214
19.10.2014, 14:51  [ТС]     При компиляции DLL-проекта не создается DLL-ка #3
Nick Alte, Спасибо. А где смотреть этот буилд лог? Я наше где указывать выходной каталог, там всякие переменные типа $(OutDir), где они задаться? Указа конкретный путь, без этих переменных, длл-ка появилась в этом каталоге, но стало выходить страшное сообщение:
"Предупреждение 2 warning MSB8012: TargetName(test) не соответствует значению свойства выходного файла (dllmain) для Linker. Это может привести к неправильному построению проекта. Чтобы исправить это, убедитесь, что значения свойств $(OutDir), $(TargetName) и $(TargetExt) соответствуют значению, указанному в %(Link.OutputFile). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 992 6 test
" и "
Предупреждение 1 warning MSB8012: TargetPath(D:\Копирайтинг\БКС\Qlua+DLL\Проба\test\Debug\test.dll) не соответствует значению свойства выходного файла (d:\5\dllmain.dll) для Linker. Это может привести к неправильному построению проекта. Чтобы исправить это, убедитесь, что значения свойств $(OutDir), $(TargetName) и $(TargetExt) соответствуют значению, указанному в %(Link.OutputFile). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 990 6 test
"
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
19.10.2014, 15:31     При компиляции DLL-проекта не создается DLL-ка #4
Всякие там переменные задаются в свойствах проекта. Не по этим страшным именам, конечно, а под более вразумительными названиями. А чтобы предупреждений не было, лучше оставить имя выходного файла как есть.
Логика простая. Есть такая штука, как Workspace, символизирующая собой создаваемый нами программный продукт. Туда может входить несколько проектов (Project), каждый из которых создаёт на выходе ровно один итоговый файл (.exe, .dll или даже .lib). И начиная с одной из версий Visual Studio они начали по умолчанию класть выходные файлы в папки Debug и Release самого Workspace, а не проекта. То есть, если раньше мы получали файл c:\Programs\MyWorkspace\Project1\Debug\project1.exe, теперь имеем c:\Programs\MyWorkspace\Debug\project1.exe
Yandex
Объявления
19.10.2014, 15:31     При компиляции DLL-проекта не создается DLL-ка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru