import DLL error 126

O jezykach programowania w platformach i nie tylko.
crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

import DLL error 126

Nieprzeczytany post autor: crn »

Witam.

Napisalem biblioteke DLL, ktora korzysta z dobrodizejstwa winapi wszystko dziala, tylko zaczyna sie problem w momencie przenoszenia jej.

Uzywam Visual Studio.

1. Jezeli linkuje biblioteke statyczne, to przestaje dzialac nawat u mnie - nie mam pojecia czemu.

2. Jak linkuje ja dynamicznie, i dolaczam pli MSCXXX dostaje komunikat:

cannot load libary error 126.

Probowalem kompilowac to w devie, wtedy, nie moge zarejestorwac pamieci (wspol)dzielonej

Moglby ktos pomoc

Awatar użytkownika
cf16
Stały bywalec
Stały bywalec
Posty: 33
Rejestracja: 27 sty 2012, 18:43

Nieprzeczytany post autor: cf16 »

no jak linkujesz statycznie i "przestaje dzialac" to chyba czyli zle napisales ? hah.
jestes pewien ze dobrze napisales?
moze kod zamiescisz.
tutaj jest przyklad dzialajacego dll:
http://cf16rocket.posterous.com/mt4-dll ... -a-w-66508

crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

Nieprzeczytany post autor: crn »

Kompilator to visula studio.
Jak pisalem - przy dynamicznym linkowaniu u mnie na komputerze dziala, natomiast na innych juz nie chce (nawet po dolaczeniu bilbiotek microsoftowych - wywala order 126 wtedy). Jak linkuje statycznie, to tez nie dziala.

Moze teraz po uzupelnieniu informacji ktos pomoze?

main.cpp:

Kod: Zaznacz cały

#include <iostream>
#include <windows.h>
#include <string>
#include <TCHAR.H>

#include <sstream>


// Maksymalna ilosc danych - wielkosc struktury
#define DataSIZE 50
#define StringLen 10

struct trades
{
	int Size;
	char symbol[DataSIZE][StringLen];
};

struct MqlStr
{
   int               len;
   char             *string;
};  

using namespace std;

HANDLE ghMutex;
HANDLE hFileMapping;
trades* pSharedData;

void CpyChar(int len, char *source,char * dest )
{
	int i;
	for(i=0; i<len; i++)
	{
		dest[i]=source[i];
	}
	dest[i]='\0';
	//dest[i+1]='\0';
	
}

void CpyChar(int len, string source ,char * dest )
{
	int i;
	for(i=0; i<len; i++)
	{
		dest[i]=source[i];
	}
	dest[i]='\0';
	//dest[i+1]='\0';
}


int ReadData2(int *Size, MqlStr* symbol)
{	

	
	LPCWSTR MemoryName=_TEXT("_dfgdfg_");
	LPCWSTR MutexName=_TEXT("_dfgdfg_");

	hFileMapping = CreateFileMapping (INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, sizeof(trades), MemoryName);

	if (hFileMapping == NULL){

		MessageBox(NULL, _TEXT(" CreateFileMapping ERROR "),NULL,0);
		//return -1;
	}

	pSharedData = (trades*) MapViewOfFile(hFileMapping, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

	ghMutex = CreateMutex(NULL,FALSE,MutexName);

	WaitForSingleObject( ghMutex,INFINITE);

	Size[0]=pSharedData->Size;

	string tmp,tmp2;

	for(int i=0; i<Size[0]; i++)
	{

		tmp="  ";
			
		tmp = pSharedData->symbol[i];
		
		//tmp +=i;
		//tmp+=")";

		//CpyChar(tmp.length(),pSharedData->symbol[i],symbol[i].string);
		CpyChar(tmp.length(),tmp,symbol[i].string);
	}


	ReleaseMutex(ghMutex);

	UnmapViewOfFile(pSharedData);

	CloseHandle(hFileMapping);
	CloseHandle(ghMutex);

	return Size[0];
}
main.h:

Kod: Zaznacz cały


extern "C"
{
static __declspec(dllimport) int ReadData2(int *Size,MqlStr* symbol);
}
def:

Kod: Zaznacz cały


LIBRARY	"ShM_DLL2"

EXPORTS

	ReadData2 @1


Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

zobacz czy pomoze

http://www.microsoft.com/download/en/co ... aspx?id=19

pozdrawiam
Andrzej Pierz

Dodano po 2 minutach:

moze jakis framework ?? no i zamiast Debug ustaw Release ??

Dodano po 9 godzinach 49 minutach:

u mnie zadzialalo

test.cpp

Kod: Zaznacz cały

// test.cpp : Defines the exported functions for the DLL application.
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
#include <TCHAR.H>

#include <sstream> 


// Maksymalna ilosc danych - wielkosc struktury
#define DataSIZE 50
#define StringLen 10

struct trades
{
   int Size;
   char symbol[DataSIZE][StringLen];
};

struct MqlStr
{
   int               len;
   char             *string;
}; 

using namespace std;

HANDLE ghMutex;
HANDLE hFileMapping;
trades* pSharedData;

void CpyChar(int len, char *source,char * dest )
{
   int i;
   for(i=0; i<len; i++)
   {
      dest[i]=source[i];
   }
   dest[i]='\0';
   //dest[i+1]='\0';
   
}

void CpyChar(int len, string source ,char * dest )
{
   int i;
   for(i=0; i<len; i++)
   {
      dest[i]=source[i];
   }
   dest[i]='\0';
   //dest[i+1]='\0';
}


int ReadData2(int *Size, MqlStr* symbol)
{   

   return(1234567890);
   
} 

test.def

Kod: Zaznacz cały

LIBRARY	"test"
EXPORTS
   ReadData2
z poważaniem
Andrzej Pierz
FOREX-SERVICE

crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

Nieprzeczytany post autor: crn »

Dzieki Andrzej, dzisaj przetestuje i dam znac.
Znalazlem jeszcze cos takiego na MSDN:


http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Wynika z tego ze wszytko jest jak powinno.

Dzisaj pobawie sie tym i dam znac jak wyszlo.


Pozdrawiam

Dodano po 7 godzinach 52 minutach:

reinstal framework'a pomogl zeby dll'ka z deva dzialala (dobrei to :) )
ale z vb nadal nie idzie - tym razem wyrzuca (oczywisce tylko przy linkowaniu statycznym) error 127 wg. google to ejst brak def file.
Mi pomyslow brak, ma ktos jakis ?

Pozdrawiam

Awatar użytkownika
cf16
Stały bywalec
Stały bywalec
Posty: 33
Rejestracja: 27 sty 2012, 18:43

Nieprzeczytany post autor: cf16 »

crn pisze:Kompilator to visula studio.]
Vistula?

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

Visual Studio ;)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

crn i jak poradziles juz sobie ??

pozdrawiam
Andrzej PIerz
z poważaniem
Andrzej Pierz
FOREX-SERVICE

crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

Nieprzeczytany post autor: crn »

Dziala mi wszystko ale tylko po dekompilacji w DEV a w visualu nie chce isc ;/
DLLki bez pamieci (wspol)dzielonej dzialaja, z nie chca. Jak w devvie dziala, to znaczy, ze Visual czegos nie linkuje statycznie

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

mozliwe ... ja bibliotek nie pisze w VS tylko w DEV-ie , bo zawsze mialem jakies problemy z VS ;) ...

Dodano po 12 minutach:

zobacz tez w ustawieniach czy masz ustawione Common Language Runtime Support
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ