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

C++

Войти
Регистрация
Восстановить пароль
 
Segaman
2 / 2 / 1
Регистрация: 03.09.2014
Сообщений: 145
#1

Cтатическая линковка или "дайте _imp__func, а не __imp_func" - C++

21.04.2016, 17:08. Просмотров 218. Ответов 2
Метки нет (Все метки)

написал DLL, собираю всё в MinGW Code::Blocks
на выходе получаю файл func.a, func.def и func.dll
внутри func.a три раза упоминается __imp_func ,т.е. с 2 подчеркиваниями сначала и 1 после imp
компилятор при сборке программы со статической линковкой к func.a ругается на то, что подчёркиваний вначале должно быть 1, а после imp 2, а в func.a все наоборот.

пробовал линковать к другим проэктам, таже канител: "дайте _imp__func, а не __imp_func"
пробовал пересобирать, бесполезно.
может кто-то сталкивался с такой проблемой?
просто у меня есть ещё 3 dll собранные в той же среде и работающие. они линкуются нормально, а у этой такая проблема

вот main.h
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
#ifndef __LIBLOG_H__
#define __LIBLOG_H__
/*---------------------------------------------------------*/
#include <windows.h>
 
#ifdef LIBLOG_BUILD_DLL
    #define DLL_LIBLOG_EXPORT __declspec(dllexport)
    #warning "DLL_LIBLOG_EXPORT dllexport"
#else
    #define DLL_LIBLOG_EXPORT __declspec(dllimport)
    #warning "DLL_LIBLOG_EXPORT dllimport"
#endif
/*---------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
/*---------------------------------------------------------*/
 
int DLL_LIBLOG_EXPORT   func(int count);
 
/*---------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
/*---------------------------------------------------------*/
#endif // __LIBLOG_H__
Добавлено через 59 секунд
текст ошибки:
C++
1
bin\obj x86\config.o:config.cpp:(.text+0x4b): undefined reference to `_imp__func'
Добавлено через 4 часа 1 минуту
пересоздал проэкт, не помогло. всё ещё не собирается
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2016, 17:08     Cтатическая линковка или "дайте _imp__func, а не __imp_func"
Посмотрите здесь:
C++ Дан текст, хранящийся в текстовом файле f, каждый символ которого может быть малой буквой, цифрой или одним из знаков "+", "-", "*".
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" C++
Определить, какая из точек "В" или "С" расположены ближе к точке "А". C++
C++ Обчисление введенной строки любого формата(пример:"(2+3)/4*2"или"2+3"или ...)
C++ Реализовать условие "больше или равно", "меньше или равно" для простых дробей в классе
бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному C++
Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль" C++
C++ WinAPI Ошибка: выражение слева от ".length"/".substr" должно представлять класс, структуру или объединение
Для массива из 10 чисел проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет" C++
Проверить, образуют ли числа симметричную последовательность (варианты ответа "Yes" или "No") C++
C++ Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое
"Необработанное исключение в "0x00417c85" в "oui2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"." Visual C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3117 / 1919 / 208
Регистрация: 13.01.2012
Сообщений: 7,349
21.04.2016, 20:36     Cтатическая линковка или "дайте _imp__func, а не __imp_func" #2
Может stdcall влепить или в среде декорацию вырубить
Segaman
2 / 2 / 1
Регистрация: 03.09.2014
Сообщений: 145
22.04.2016, 10:29  [ТС]     Cтатическая линковка или "дайте _imp__func, а не __imp_func" #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
проблема была в разрядности.
Code::Blocks по дефолту ставил 64х, а моя программа на 32х написана.
вообщем проблема решилась установкой верной разрядности.
Yandex
Объявления
22.04.2016, 10:29     Cтатическая линковка или "дайте _imp__func, а не __imp_func"
Ответ Создать тему
Опции темы

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