Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Òþ²Ø½ø³ÌµÄÔ´´úÂë(c/c++ʵÏÖ)!

²ÉÓÃ×¢Èëµ½ÆäËû½ø³ÌµÄ·½·¨À´Òþ²Ø×Ô¼ºµÄ½ø³Ì¡£¾ÍÊÇ˵£¬°ÑÄãÏë×öµÄÊÂÇé¼ÄÉúµ½±ðÈ˵Ľø³ÌÀïÃæ¡£±ÈÈçIEʲôµÄ¡£¹ØÓÚ×¢ÈëµÄ·½·¨ºÜ¶à£¬ÏÂÃæÎÒ¸øÄãÒ»¸öDLL×¢ÈëµÄ·½·¨£¬Õâ¸öÊÇÎÒ×öijÍâ¹ÒʱÓùýµÄ´úÂ룬Äã²Î¿¼Ò»Ï°ѡ£
int APIENTRY _tWinMain( HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPTSTR    lpCmdLine,
                        int       nCmdShow)
{
TCHAR szCommandLine[]  _T("Ä¿±ê½ø³Ì");
TCHAR szCurPath[] = _T("µ±Ç°Ä¿Â¼");
WCHAR szTagetDLLName[256] = L"Ä¿±êDLL";
PWSTR pszRemoteDLLName    = NULL;
HANDLE hRemoteThread      =     NULL;
STARTUPINFO StartupInfo   = { sizeof(StartupInfo) };
PROCESS_INFORMATION ProcessInfo = { 0 };
PTHREAD_START_ROUTINE pfnLoadLibraryAddress  = NULL;
HANDLE hTheFileMaping = NULL;
LPREMOTEDATA pTheRemoteData = NULL;
__try
{
  //»ñµÃ±¾µØ½ø³Ì·¾¶Ãû³Æ
  GetModuleFileNameW(hInstance, szTagetDLLName, 256);
 
  //»ñµÃÄ¿±êDLL·¾¶Ãû³Æ£¬¼Ù¶¨Ä¿±êDLL±¾µØ½ø³ÌÔÚͬһ¸öĿ¼¡£
  WCHAR * p = szTagetDLLName + lstrlenW(szTagetDLLName) - 1;
  while( (*p != L'\\') && (p != szTagetDLLName) )
   p --;
  p ++;
  *p = L'\0';
  lstrcatW(szTagetDLLName, L"TagetDll.DLL");
 
  //»ñÈ¡LoadLibraryWÔÚKernel32.DLLÖеĵØÖ·£¬ÓÃÓÚ×÷ΪԶÏ̵߳ÄÈë¿ÚµØÖ·¡£
  pfnLoadLibraryAddress = ( PTHREAD_START_ROUTINE )
        GetProcAddress( GetModuleHandle( _T("Kernel32") ), "LoadLibraryW" );
  if( NULL == pfnLoadLibraryAddress )
  


Ïà¹ØÎĵµ£º

.netʵÀý:ʹÓÃC++µ÷ÓÃC#µÄDLL

1 ´´½¨C# DLL£¬ÐèÒªÖ¸¶¨Ó¦ÓÃÀàÐÍΪ“Àà¿â”£¬´úÂ룺
namespace CSLib
{
    public class Class1
    {
        private string name;
        public string Name
      ......

Developer Support Languages VC++, C# and VB.NET


Welcome to Microsoft Developer Support, Languages team blog! You will find a lot of language related troubleshooting resources here.
Troubleshooting PInvoke Related Issues 
I am back with some more PInvoke Stuff.  Recently I was working on a PInvoke issue which I found interesting ......

c£¬c++·ç¸ñ×Ö´®Óëstrcmp

ÖÚËùÖÜÖª£¬strcmpΪ×Ö´®±È½ÏÖ»Ó㬼òµ¥µÄº¯Êý²¢²»¼òµ¥¡£
ÏÂÃæµÄ´úÂë
int main()
{
      char* cp1 = {'z', 'h', 'a', 'n', 'g'};
      char* cp2 = {'z', 'h', 'a', 'n', 'g'};
      std::cout<<strcmp(cp1, cp2)<< ......

c/sµÄÏîÄ¿´ò°ü£¨º¬ÅäÖÃÎļþ£©

1 ÔÚ½â¾ö·½°¸ÖÐÌí¼ÓWindows°²×°ÏîÄ¿
   ˼·: A ÆäËüÏîÄ¿ÀàÐÍ->°²×°ºÍ²¿Êð
     B Ñ¡Ôñ°²×°ÏîĿģ°å
2 Íê³É³ÌÐòµÄÌí¼Ó
    ˼·: A Ñ¡ÖÐÓ¦ÓóÌÐòÎļþ¼Ð->ÓÒ¼üÑ¡ÔñÌí¼ÓÎļþ->
        Ñ¡ÖÐÓ¦ÓóÌÐò(ÏîÄ¿Ãû.exe)£¨Íê³É³ÌÐòµÄ´ò°ü£ ......

LinuxÏÂC++ÀàµÄÏ̺߳¯Êý

×î½üÔÚÓÃC++±àдһ¸öRTSPµÄ¿Í»§¶Ë£¬ÓÉÓÚÒªÓõ½Ị̈߳¬¸ù¾ÝC±à³ÌµÄ¾­Ñ飬дÁËÈçÏ´úÂ룺
class LiRtspSession
{
    public:
       void* MainThreadFunc(void* pvData);
       void* AudioProcThreadFunc(void* pvData);
  & ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ